我有一个场景,我需要更改UIButton的UIEdgeInsets,它被添加到UITableViewCell,我在layoutSubviews中设置它,但是它被调用了很多次,它也可以用init工作但是我不确定这真的是一个地方,因为那只会召唤一次。
override func layoutSubviews() {
super.layoutSubviews()
if imageView != nil {
titleEdgeInsets = UIEdgeInsets(top: 52, left: -10, bottom: 0, right:-10)
}
}
有人能告诉我哪一个是理想的地方,为什么?
答案 0 :(得分:1)
awakeFromNib
,但不是在重复使用细胞时。
但在awakeFromNib期间,框架布局不会出现。 UIEdgeInsets
不受帧影响,所以我更喜欢在awakeFromNib中调用它而不是
layoutSubviews
layoutSubviews
你会得到正确的框架,所以只使用时尚,需要正确的框架,如角半径
答案 1 :(得分:0)
如果您使用awakeFromNib()
,请使用xib
。
它从文档到awakeFromNib()
:
通常,您需要为需要在设计时无法完成的其他设置的对象实现awakeFromNib。例如,您可以使用此方法自定义任何控件的默认配置,以匹配用户首选项或其他控件中的值。您也可以使用它将单个控件恢复到应用程序的某个先前状态。
或者,如果您不使用xib
,只需使用init,因为它调用了一次。