当UIButton的UITableViewCell子视图或任何其他视图的子视图时,设置UIButton边缘插入的理想位置是什么

时间:2018-05-07 07:16:21

标签: ios swift uibutton layoutsubviews

我有一个场景,我需要更改UIButton的UIEdgeInsets,它被添加到UITableViewCell,我在layoutSubviews中设置它,但是它被调用了很多次,它也可以用init工作但是我不确定这真的是一个地方,因为那只会召唤一次。

override func layoutSubviews() {
        super.layoutSubviews()
        if imageView != nil {
            titleEdgeInsets = UIEdgeInsets(top: 52, left: -10, bottom: 0, right:-10)
        }
    }

有人能告诉我哪一个是理想的地方,为什么?

2 个答案:

答案 0 :(得分:1)

从xib或storyboard加载新单元格时,将调用

awakeFromNib ,但不是在重复使用细胞时。 在awakeFromNib期间,框架布局不会出现。 UIEdgeInsets不受帧影响,所以我更喜欢在awakeFromNib中调用它而不是 layoutSubviews

layoutSubviews你会得到正确的框架,所以只使用时尚,需要正确的框架,如角半径

答案 1 :(得分:0)

如果您使用awakeFromNib(),请使用xib

它从文档到awakeFromNib()

调用一次
  

通常,您需要为需要在设计时无法完成的其他设置的对象实现awakeFromNib。例如,您可以使用此方法自定义任何控件的默认配置,以匹配用户首选项或其他控件中的值。您也可以使用它将单个控件恢复到应用程序的某个先前状态。

或者,如果您不使用xib,只需使用init,因为它调用了一次。