【发布时间】:2014-10-15 23:21:32
【问题描述】:
我正在尝试在界面生成器中设置一个简单的UITableViewCell, 没有自动布局。我正在使用旧的弹簧和支柱。
当我给标签一个灵活的宽度时,它的布局似乎好像UITableViewCell 的宽度要大得多,尽管UITableViewCell 告诉我它在layoutSubviews 中的宽度是375 像素:
- (void)layoutSubviews
{
[super layoutSubviews];
NSLog(@"Label width: %f", self.nameLabel.frame.size.width); // 695.0 for a label that stretches the whole width
NSLog(@"Superview (UITableViewCell) width: %f", self.nameLabel.superview.frame.size.width); // 375.0
}
在模拟的 iPhone 5S(iOS 7 或 8)上,superview 为 320,但 UILabel 扩展到 640。
在模拟的 iPhone 6 上,superview 为 375,但 UILabel 扩展到 695。
在模拟的 iPhone 6 Plus 上,superview 是 414,但 UILabel 是 734。
我对其他视图没有这个问题。例如,我可以将UILabel 添加到UIViewController 并让它正确拉伸宽度。到底是怎么回事?我该如何解决这个问题?
编辑:
有趣的是,如果我在cellForRowAtIndexPath: 期间以编程方式添加约束,那么只要我使用旧的dequeueReusableCellWithIdentifier 而不是dequeueReusableCellWithIdentifier:forIndexPath:,它似乎就可以按预期工作。不过,我想将所有约束保留在 Interface Builder 中。有什么想法吗?
【问题讨论】:
标签: ios objective-c iphone uitableview