UIにストーリーボードを使用しています。以前はXCode 4.6を使用し、iOS 6でリリースしていました。それ以来、XCode 5を使用してiOS 7に更新し、XCode 5でうまく動作するようにストーリーボードを更新しました。
UITextView
は、コード内のフォントの変更を表示したくない。テキストの色の変更は正常に機能します。その他のプロパティの変更は問題ありません。フォントではありません。カスタムフォントを使用していたので、サイズが異なるさまざまなフォント(つまり、systemFontOfSize:
)しかし、それはうまくいきませんでした。テキストビューのみは、ストーリーボードに設定されているフォントを表示します。ここで何が欠けているのでしょうか?この種のものを台無しにする自動レイアウトの制約はありますか?移行中に制約に関するいくつかの問題がありましたが、前述したように、フォントはiOS 7で正常に機能します。
ストーリーボードの何かが欠けていると思います。UIViewController
を作成し、コードにテキストビューを追加すると、うまくいきます。
私はいくつかのコードを作成しましたが、この場合に役立つかどうかはわかりません。
この問題は、ストーリーボードでeditable
プロパティがfalseになっていることが原因でした。これにより、フォントが変更されないままになった理由はまったくわかりません。iOS6でのみです。
さらに奇妙なことに、これはiPadではなくiPhoneでのみ発生します。
コードでフォントを設定していて、編集可能なテキストビューが必要ない場合は、次のようにします。
textView.editable = YES;
textView.font = newFont;
textView.editable = NO;
私の場合、UITextViewの「選択可能な」プロパティの問題です。
そこで、Storyboard EditorでUITextViewの「選択可能な」プロパティをチェックしてYESに設定しました
その後、viewWillAppearでこのプロパティをNOに設定します。
textview.text = @"some text";
textview.selectable = NO;
私にとっては、UITextViewのテキストを設定し、フォントを設定した後(色と同じ)に機能します:
_myTextView.text = @"text";
[_myTextView setFont:[UIFont fontWithName:@"Helvetica Neue" size:18.0f]];
_myTextView.textColor = [UIColor whiteColor];
みんな答えてくれてありがとう。問題はまだiOS9に存在します。私が見つけたのは、Interface Builderで「ser Interaction Enabled = false」を設定すると、EditableおよびSelectableのままにできることです。 = trueユーザーはテキストビューを編集できません。
だから、私の解決策は次のとおりです。
Swiftのコード:
textOutlet.editable = true
textOutlet.textColor = UIColor.whiteColor()
textOutlet.font = UIFont(name: "ArialMT", size: 20)
textOutlet.editable = false
または、最初にテキストを変更すると、魔法のように解決されます
textOutlet.text = "omg lol wtf"
textOutlet.textColor = UIColor.whiteColor()
textOutlet.font = UIFont(name: "ArialMT", size: 20)
フォントサイズが無視されていることがわかりました。これは、選択可能(ストーリーボード内でUITextViewを選択した)というチェックボックスをオンにすることで解決しました。
この問題は、Interface BuilderでSelectableプロパティをFALSEに設定した場合にのみ発生します。
EditableおよびSelectableプロパティをFALSEに設定する必要がある場合は、Interface Builderではなく、CODEから実行してください。
要約すると、-編集可能および選択可能にする properties = [〜#〜] yes [〜#〜] in Interface BuilderプロパティをFALSEにする必要がある場合のコード:
_textView.editable = NO;
_textView.selectable = NO;
お役に立てれば、
私のために働いたSwift 3カテゴリ:
extension UITextView {
func setFontAndUpdate(_ font: UIFont?) {
self.font = font
// Font doesn't update without text change
let text = self.text
self.text = nil
self.text = text
}
}
他の人が述べたように:
textView.font = UIFont.systemFont(ofSize: 16)
textView.isEditable = false
p.s。isEditable
はデフォルトでtrue
であるため、最初にtrue
として設定する必要はありません。
私の場合(Xcode 7.3、iOS 9で開発中)、
原因は、テキストとフォントファミリ/サイズを設定する順序であり、編集可能または選択可能な多くの回答のオプションではありません(そして、そのTextviewでxibというストーリーボードが表示されません)。
のように入力した場合
[myTextView setFont:[UIFont fontWithName:@"HelveticaNeue-Italic" size:20]];
myTextView.attributedText = mAttStr;
フォントのファミリーとサイズは変更されませんが、それ以外の場合、これら2つのステップを逆にすると機能します。テキストの設定は、フォントのファミリー/サイズの設定よりも先にする必要があります。