UITextView – 在XCode 5上设置字体不适用于iOS 6
我正在使用故事板为我的用户界面。 我以前使用XCode 4.6并在iOS 6上发布。我已经使用XCode 5更新到iOS 7,并更新了Storyboard以与XCode 5很好地协作。我有一个问题:
UITextView
不希望在代码中显示字体更改。 文本颜色更改正常工作。 任何其他财产变化都可以。 字体,而不是。 我使用自定义字体,所以我检查了不同的字体大小(即systemFontOfSize:
,但没有奏效。 文本视图只显示在故事板中设置的字体。 我可以在这里错过什么? 是否有任何自动布局约束混乱这种事情? 在迁移过程中,我遇到了一些限制问题,但正如我所说的,iOS 7中的字体效果很好。
我想这是故事板中的东西,我失踪了,就像我创build一个UIViewController
并在代码中添加文本视图,它工作正常。
我提出了一些代码,但我不确定在这种情况下会有所帮助。
更奇怪的是,这只发生在iPhone上,而不是iPad上。
如果您在代码中设置字体,并且不想要可编辑的文本视图,请执行以下操作:
textView.editable = YES; textView.font = newFont; textView.editable = NO;
在我的情况下,它是UITextView的“可选”属性的问题。
所以我在Storyboard Editor中检查了UITextView的'selectable'属性来设置YES
稍后在viewWillAppear中将此属性设置为NO。
textview.text = @"some text"; textview.selectable = NO;
该问题是由故事板中的editable
属性为false造成的。 我完全不知道为什么这会导致字体保持不变 – 只在iOS 6上。
对我来说,这是工作,如果你设置你的UITextView的文本,并设置字体(颜色相同)后:
_myTextView.text = @"text"; [_myTextView setFont:[UIFont fontWithName:@"Helvetica Neue" size:18.0f]]; _myTextView.textColor = [UIColor whiteColor];
谢谢你们所有的答案。 问题仍然存在于iOS9上。 我发现,当你在Interface Builder中设置“ User Interaction Enabled = false ”时,你可以离开Editable和Selectable = true ,用户将不能编辑文本视图。
所以,我的解决scheme是:
- 在IB中设置用户交互已启用= False
- 在IB中设置Editable = True
- 在IB中设置Selectable = True
- 以任何你想要的方式configuration你的文本视图。
代码为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)
我发现字体大小被忽略。 这是通过勾选名为Selectable的checkbox来解决的(在故事板中select了UITextView)
只有在Interface Builder中将Selectable属性设置为FALSE时,才会出现此问题。
如果您需要将可编辑和可选属性设置为FALSE,请从CODE执行,而不是在Interface Builder中执行。
总结一下,在Interface Builder中 编辑可选和可选属性= YES ,然后添加以下代码,以防需要属性为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 } }
在我的情况下(在Xcode 7.3,iOS 9上开发),
原因是设置文本和font-family / size的顺序,而不是可编辑或可选的许多答案告诉那里(我没有得到任何故事板,在该Textview XIB)。
如果我input像
[myTextView setFont:[UIFont fontWithName:@"HelveticaNeue-Italic" size:20]]; myTextView.attributedText = mAttStr;
那么字体的家庭和大小不会改变,但是当我颠倒这两个步骤,它的作品。 设置文本应该超过设置字体的家庭/大小。
正如其他人所说:
textView.font = UIFont.systemFont(ofSize: 16) textView.isEditable = false
ps不需要首先将isEditable
设置为true
因为默认情况下它是true
:稍微短一些,好一点