UITextView - 在XCode 5上设置不适用于iOS 6的字体

Har*_*rry 65 xcode objective-c ios uistoryboard

我正在为我的UI使用故事板.我之前使用的是XCode 4.6并在iOS 6上发布.我已经使用XCode 5更新到iOS 7并更新了Storyboard以便与XCode 5很好地协作.我有一个问题:

UITextView不希望在代码中显示字体更改.文本颜色更改工作正常.任何其他财产变更都没问题.字体,完全没有.我使用的是自定义字体,所以我检查了不同大小的不同字体(即systemFontOfSize:),但是没有用.文本视图显示在Storyboard中设置的字体.我在这里可以缺少什么?有没有任何自动布局约束混乱这种事情?我在迁移过程中遇到了一些约束问题,但正如我所说,这些字体在iOS 7中运行良好.

我想这是故事板中我缺少的东西,就像我UIViewController在代码中创建并添加文本视图一样,它工作正常.

我提出了一些代码,但我不确定在这种情况下它会有什么帮助.

jab*_*jab 114

更奇怪的是,这只发生在iPhone上,而不是iPad上.

如果您在代码中设置字体并且不想要可编辑的文本视图,请执行以下操作:

textView.editable = YES;
textView.font = newFont;
textView.editable = NO;
Run Code Online (Sandbox Code Playgroud)

  • 可悲的是仍然需要iOS9. (9认同)
  • 截至2014年12月10日,iOS8仍然需要这个技巧 (3认同)
  • 适用于textColor (2认同)

Sat*_*ito 74

就我而言,它是UITextView的"可选"属性的问题.

所以我在Storyboard Editor中检查了UITextView的'selectable'属性,将其设置为YES 设置可选择

稍后在viewWillAppear中将此属性设置为NO.

textview.text = @"some text";
textview.selectable = NO;
Run Code Online (Sandbox Code Playgroud)

  • 这实际上也是我的问题.没有意义. (11认同)
  • 哇我简直不敢相信这个......这肯定是苹果公司的一个错误吗?! (2认同)

Har*_*rry 55

该问题是由editable故事板中的属性为false 引起的.我完全不知道为什么这会导致字体保持不变 - 仅在iOS 6上.

  • 检查`selectable`属性对我有用. (14认同)
  • 这对我不起作用,但在设置文本后设置字体.去搞清楚.谢谢Apple! (10认同)
  • 检查"可选"或"可编辑"也适合我.这绝对是苹果公司的一个错误. (2认同)
  • 问题和解决方案仍适用于iOS 9(Xcode 7.3) (2认同)

Jor*_*tel 20

对我来说,如果你设置了UITextView的文本并设置了字体(颜色相同),它就可以了:

_myTextView.text = @"text";
[_myTextView setFont:[UIFont fontWithName:@"Helvetica Neue" size:18.0f]];
_myTextView.textColor = [UIColor whiteColor];
Run Code Online (Sandbox Code Playgroud)


Fla*_*lar 13

谢谢你们的所有答案.问题仍然出现在iOS9上.我发现,当您在Interface Builder中设置" User Interaction Enabled = false "时,您可以使EditableSelectable = true,并且用户将无法编辑文本视图.

所以,我的解决方案是:

  1. 在IB中设置用户交互已启用= False
  2. 在IB中设置Editable = True
  3. 在IB中设置Selectable = True
  4. 以您想要的任何方式配置文本视图.


Esq*_*uth 10

swift代码:

textOutlet.editable = true
textOutlet.textColor = UIColor.whiteColor()
textOutlet.font = UIFont(name: "ArialMT", size: 20)
textOutlet.editable = false
Run Code Online (Sandbox Code Playgroud)

或者,如果您先更改文本,它会神奇地解决

textOutlet.text = "omg lol wtf"
textOutlet.textColor = UIColor.whiteColor()
textOutlet.font = UIFont(name: "ArialMT", size: 20)
Run Code Online (Sandbox Code Playgroud)


Cha*_*man 7

我发现字体大小被忽略了.通过勾选名为:Selectable(在故事板中选择了UITextView)的复选框解决了这个问题.


Dan*_*rte 5

只有在Interface Builder中将Selectable属性设置为FALSE时才会出现此问题.

如果您需要将Editable和Selectable属性设置为FALSE,请从CODE执行,而不是在Interface Builder中执行.

总结一下,在Interface Builder 中使Editable和Selectable属性= YES,然后添加以下代码,以防您需要属性为FALSE:

_textView.editable   = NO;
_textView.selectable = NO;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助,