【发布时间】:2014-03-09 15:40:14
【问题描述】:
我在 iOS 5/6 应用程序中使用此代码已有很长时间了。它在viewWillAppear: 之下并操纵UILabel 高度,它可以根据需要容纳更多文本(并将其下方的其他标签向下推)。问题是,对于 iOS 7,它似乎不再工作了。文本根本不会换行到第二行。代码如下:
self.titleLabel.text = titleString;
self.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
self.titleLabel.numberOfLines = 0;
// Determine what the size of the title label should be
CGSize maximumLabelSize = CGSizeMake(163,66);
CGSize expectedLabelSize = [titleString sizeWithFont:self.titleLabel.font
constrainedToSize:maximumLabelSize
lineBreakMode:self.titleLabel.lineBreakMode];
// Adjust the the new height of the title label.
CGRect newFrame = self.titleLabel.frame;
newFrame.size.height = expectedLabelSize.height;
self.titleLabel.frame = newFrame;
NSLog(@"Title Height: %f", self.titleLabel.frame.size.height);
这里有更多信息。此UILabel 位于UITableView 的标题视图中。它是使用 Interface Builder 设计的,标签上带有 IBOutlet。 UILabel 的属性在 iOS 6 和 iOS 7 项目中是相同的。
这是 Xcode 4 在 iOS 6 上运行时的样子:
这是带有 iOS 7 的 Xcode 5(如您所见,文本没有换行):
有人有什么想法吗?
【问题讨论】:
-
你是否将UILabel上的行数设置为足够高的值?
-
iOS 7 中的文本渲染有人们注意到的怪癖,尝试给标签增加几个像素的高度(可能+5),看看它是否正确换行
-
即使在高度上加上 + 10,仍然一无所获。就像标签变大了,但文本没有换行或出现在该区域中。
标签: ios objective-c xcode cocoa-touch uitableview