【发布时间】:2015-06-30 10:18:51
【问题描述】:
我在 Interface Builder 中创建的自定义 UITableViewCell 中有一个 UIButton,高度和宽度由 Autolayout 约束定义。
我需要在自动布局定义最终尺寸后获取 UIButton 的尺寸。
我尝试过的:
在我的自定义 UITableViewCell 中
- (void)layoutSubviews
{
[super layoutSubviews];
NSLog(@"%f", self.infoButton.bounds.size.width);
self.infoButton.layer.cornerRadius = self.infoButton.bounds.size.width/2;
self.infoButton.clipsToBounds = YES;
self.infoButton.layer.borderColor = [UIColor whiteColor].CGColor;
self.infoButton.layer.borderWidth = 4.0f;
}
问题是我有不同的价值观:
2015-06-30 03:01:47.578 MYPROJ[3596:34092] 48.000000
2015-06-30 03:01:47.581 MYPROJ[3596:34092] 48.000000
2015-06-30 03:01:47.583 MYPROJ[3596:34092] 48.000000
2015-06-30 03:01:47.585 MYPROJ[3596:34092] 56.000000
2015-06-30 03:01:47.586 MYPROJ[3596:34092] 56.000000
2015-06-30 03:01:47.586 MYPROJ[3596:34092] 56.000000
2015-06-30 03:01:53.482 MYPROJ[3596:34092] 48.000000
2015-06-30 03:01:53.484 MYPROJ[3596:34092] 56.000000
2015-06-30 03:01:54.939 MYPROJ[3596:34092] 56.000000
2015-06-30 03:02:04.161 MYPROJ[3596:34092] 56.000000
2015-06-30 03:02:05.115 MYPROJ[3596:34092] 56.000000
2015-06-30 03:02:05.957 MYPROJ[3596:34092] 56.000000
我也试过- (void)awakeFromNib里面的代码我试过self.infoButton.bounds.size.width和self.infoButton.frame.size.width
它给了我自动布局之前的静态宽度,在我的例子中是 48.0 还有
恐怕将代码放在- (void)layoutSubviews 中的解决方案会影响性能,因为它会被称为用户每次滚动并应用图层转换的所有内容,有没有更好的解决方案?
【问题讨论】:
-
现在更新了答案。!!
-
我试过
self.infoButton.frame.size.widthbt 它总是给我自动布局之前的大小 -
你能提供你用于单元格按钮的水平约束吗?这会有所帮助..
-
@TejvanshSinghChhabra 我已经用图像更新了问题,实际上 UIButton 的宽度是单元格宽度的 15%,它还具有纵横比约束,如您从屏幕截图中看到的那样跨度>
-
单元格是否在水平方向上完全填满了屏幕尺寸?在这种情况下,很容易实现。
标签: ios objective-c uitableview autolayout calayer