如何获得真正的自定义单元格的宽度?
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
,只有在它发生变化时才继续。
或者您可以在滚动视图和图像视图上设置约束,而不用担心手动布局。
我在故事板中有一个自定义单元格。我已经在包含 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
,只有在它发生变化时才继续。
或者您可以在滚动视图和图像视图上设置约束,而不用担心手动布局。