如何获得真正的自定义单元格的宽度?

How do I get the real custom cell's width?

我在故事板中有一个自定义单元格。我已经在包含 tableView.

viewController 故事板中设置了 iPhone 4.7 英寸

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

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

它被调用了多次,当我 运行 它在 iPhone 5 上时,前两次不正确(故事板上的 375,然后是 320这是正确的尺寸)

如何获得单元格的实际宽度?

提前致谢。

自动布局已禁用?

-(void)layoutSubviews 如果单元格不支持自动布局,则可以正常工作并提供您预期的高度和宽度。

启用自动布局?

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

- (void)updateConstraints
{
  [super updateConstraints];

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

希望这会奏效!

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

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