簡體   English   中英

使用自動布局獲取自定義UITableViewCell中的UIButton的大小

[英]Get the size of UIButton inside a custom UITableViewCell with Autolayout

我在Interface Builder中創建的自定義UITableViewCell中有一個UIButton,其高度和寬度由自動布局約束定義。

在自動布局定義最終大小后,我需要獲取UIButton的大小。

具有自動布局的UITableViewCell

我嘗試過的

在我的自定義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.widthself.infoButton.frame.size.width

它為我提供了自動布局前的靜態寬度,在我的情況下為48.0

恐怕將代碼放入- (void)layoutSubviews的解決方案會影響性能,因為每次用戶滾動並應用圖層轉換都將調用它,是否有更好的解決方案?

在您的自定義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;
}

希望能幫助到你...

嘗試訪問按鈕的固有內容大小。

CGSize buttonSize = self.infoButton.intrinsicContentSize;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM