2015-06-30 156 views
0

我在界面生成器中创建的自定义UITableViewCell中有一个UIButton,高度和宽度由Autolayout约束定义。在自定义UITableViewCell中使用Autolayout获取UIButton的大小

我需要在自动布局定义最终大小后获取UIButton的大小。

UITableViewCell with Autolayout

我曾尝试:

在我的自定义的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 

我也有尝试了代码insid Ë- (void)awakeFromNib我都尝试self.infoButton.bounds.size.widthself.infoButton.frame.size.width

,这让我自动布局前的静态宽度是在我的案件48.0 此外

恐怕把里面的代码- (void)layoutSubviews的解决方案可能会影响性能,因为它会被称为用户每次滚动和应用层转换的一切,有没有更好的解决方案?

+0

现在更新了答案。 –

+0

我已经尝试过'self.infoButton.frame.size.width' bt在自动布局之前它总是给出尺寸 – Aladin

+0

您能提供用于单元格按钮的水平约束吗?这将有所帮助.. – Tejvansh

回答

1

在您的自定义UITableViewCell.m文件中,在您的awakeFromNib方法中添加以下行。

在这里,因为你的按钮依赖于单元格,而且它确实与设备的屏幕具有相同的宽度。

- (void)awakeFromNib { 
// Initialization code 
self.infoButton.layer.cornerRadius = [UIScreen mainScreen].bounds.size.width * 0.075f; // 0.15/2 = 0.075f (Half of the button's width) 
self.infoButton.clipsToBounds  = YES; 
self.infoButton.layer.borderColor = [UIColor whiteColor].CGColor; 
self.infoButton.layer.borderWidth = 4.0f; 
} 

希望它可以帮助...

+0

它的工作原理,谢谢,但我想我不必改变UIButton的约束。你能解释为什么'* 0.075f;' – Aladin

+0

我已经在其中添加了评论以帮助你理解。如果答案对你有帮助,请将其标记为正确并且upvote,以便其他人可以知道它.. – Tejvansh

+0

谢谢,我已经忘记了我需要宽度的一半;) – Aladin

0

尝试访问您的按钮的内在内容的大小。

CGSize buttonSize = self.infoButton.intrinsicContentSize;

+0

我已经试过这个,但它不起作用,它显示'awakeFromNib'和'layoutSubviews'中的错误值 – Aladin

相关问题