【发布时间】:2012-10-10 14:26:14
【问题描述】:
我有一个使用 Xcode 4.5 构建并在 iOS6 模拟器上运行的简单测试应用程序
它只是一个带有 UIScrollView 的 UIViewController,在 UIScrollView 中只有一个 UILabel。
我在界面构建器中将 UILabel 中的 NumberOfLines 设置为 0,并将其设置为 ScrollView 中的全宽 - 但高度只有大约 30 个点。我还将 UIScrollView 设置为仅垂直滚动。我为两个 UI 组件设置了几个 IBOutlets,并将文件的所有者设置为 UIScrollView 的委托(并放在 UIViewController 标头上。)
在 viewDidLoad 中,我只是将标签的文本设置为一个不错的长字符串。
- (void)viewDidLoad
{
[super viewDidLoad];
self.txtLabel2.text = @"`Twas brillig, and the slithy toves - Did gyre and gimble in the wabe: - All mimsy were the borogoves, - And the mome raths outgrabe. ";
}
然后在 ViewDidAppear 中我将滚动视图的内容大小设置为 UILabel 的大小:
-(void)viewDidAppear:(BOOL)animated
{
self.scrollView.contentSize = self.txtLabel2.bounds.size;
}
这似乎运作良好 - UILabel 会自动调整其高度,并将滚动视图设置为正确的高度并在文本中很好地滚动。太好了。
但是,我显然在这里做了一些严重的错误 - 因为如果我进入界面构建器并将 UILabel 的字体大小从默认值 (17.0) 更改为任何其他值 - 它就会停止工作。标签不再调整大小并在第一行被截断。
我已尝试手动调整 UILabel 的大小 - 例如使用此处建议的解决方案:
并在我设置内容时使用扩展:
self.txtLabel2.text = @"`Twas brillig, and the slithy toves - Did gyre and gimble in the wabe: - All mimsy were the borogoves, - And the mome raths outgrabe. ";
//use the current width - resize the height
[self.txtLabel2 sizeToFitFixedWidth:self.txtLabel2.bounds.size.width];
但这似乎没有任何效果。
我不明白为什么更改字体大小会改变 UILabel 自动调整大小的行为,我不知道为什么手动设置 UILabel 的大小没有效果。这里发生了什么? (还有——我应该做些什么不同的事情,以免我一开始就陷入这种混乱!)
【问题讨论】:
-
这是一个非常简单的小应用程序——我可以从头开始并获得相同的结果。有人能重现这种效果吗?
标签: objective-c ios uiscrollview uilabel ios6