【发布时间】:2013-07-18 05:37:57
【问题描述】:
UITextView 遇到了一个有趣的问题。我使用此代码在视图控制器的loadView 中将文本视图放在屏幕上:
self.textView = [[UITextView alloc] init];
if (self.tutorialPage.text.length > 0)
{
self.textView.backgroundColor = [UIColor clearColor];
self.textView.editable = NO;
self.textView.text = self.tutorialPage.text;
self.textView.showsVerticalScrollIndicator = NO;
self.textView.textColor = [UIColor whiteColor];
self.textView.textAlignment = NSTextAlignmentLeft;
self.textView.translatesAutoresizingMaskIntoConstraints = NO;
//Later constraints are added
}
UIFont *font = [UIFont fontWithName:@"Noteworthy-Bold" size:(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? 20.0 : 15.0)];
self.textView.font = font;
[self.view addSubview:self.textView];
顺便说一句,这段代码的每一行都会被调用,并且文本视图肯定在屏幕上。但是不知何故,当再次调用相同的代码来创建另一个相同类型的视图控制器时,文本不会显示出来。但是,当我通过点击并按住在文本视图中选择文本时,文本突然出现。
更奇怪的是,当我改变这一行时
UIFont *font = [UIFont fontWithName:@"Noteworthy-Bold" size:(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? 20.0 : 15.0)];
要使用不同的字体名称,例如@"Noteworthy-Light" 或@"TimesNewRomanPS-BoldMT",文本视图的行为与预期一样...可能是什么原因导致此问题?
以前有人见过这个问题吗?如果是这样,请分享您是如何解决或解决它的。
【问题讨论】:
-
在 viewDidload 中使用
-
@iT。尝试将所有视图加载代码移动到 viewDidLoad 中,但分配视图的部分除外,但没有运气。我没有为这个视图控制器使用 IB,所以 loadView 是我创建所有子视图并添加约束的地方。
-
有时,您使用的操作系统或字体类型本身仅适用于某些情况。这可能很奇怪,因为它因您实际使用的字体而异。即使您使用了常见的字体,例如 Georgia。这与使用 AppleGothic 的行为不同
-
事实证明,如果我将文本视图的 width 从 688 更改为 512 左右,文本将保留在那里。我已经测试了 Noteworthy Bold、Light 和 Helvetica Bold 和 Regular,它们似乎都在 510-520 左右工作。但我的问题是,为什么这对文本视图很重要?
-
包装了吗?您是否只能看到 UITextView 的一行,而较大的字体正在换行并插入新行并将文本凸出框架?
标签: ios uitextview uifont