0

我在情节提要中有一个自定义单元格。viewController我已经为包含它的故事板设置了 iPhone 4.7 英寸tableView

因为我想在这个单元格内布置一些UIImageViewsscrollView所以我需要知道单元格的宽度。我试图在 中获得这个宽度layoutSubviews,如下所示:

-(void)layoutSubviews
{
    [super layoutSubviews];
    CGFloat cellWidth = self.contentView.bounds.size.width;
}

它被多次调用,当我在 iPhone 5 上运行它时,前两次是不正确的(它是 375,这是它在情节提要上的样子,然后是 320,这是正确的大小)

无论如何,我如何获得单元格的实际宽度?

提前致谢。

4

2 回答 2

0

禁用自动布局?

-(void)layoutSubviews如果单元格不支持自动布局,它将正常工作并给出您预期的高度、宽度。

启用自动布局?

在约束更新过程中覆盖它以调整您的特殊约束

- (void)updateConstraints
{
  [super updateConstraints];

  CGFloat cellWidth = CGRectGetWidth(self.bounds);
  NSLog(@"cellWidth %f", cellWidth);
}

希望这会奏效!

于 2015-10-31T06:53:03.617 回答
0

最终事实是 UIKit 可以调用layoutSubviews任意次数。您只需假设每次都是最后一次,并采取措施避免重复工作。例如,从先前的调用中缓存self.bound.size,并且仅在更改时才继续。

或者您可以在滚动视图和图像视图上设置约束,而不必担心手动布局。

于 2015-10-31T06:56:50.357 回答