我正在使用layoutIfNeeded
在UITableViewCell
内进行一些视图设置。 e.g:
override func layoutIfNeeded() {
super.layoutIfNeeded()
let rescueButtonCornerLayer = CAShapeLayer()
let rescueButtonRoundedCornersPath = UIBezierPath(roundedRect: rescueNowButton.bounds, byRoundingCorners: [UIRectCorner.bottomLeft, UIRectCorner.bottomRight], cornerRadii: CGSize(width: MyTheme.cornerRadius, height: MyTheme.cornerRadius))
rescueButtonCornerLayer.path = rescueButtonRoundedCornersPath.cgPath
rescueNowButton.layer.mask = rescueButtonCornerLayer
}
这在iOS10中运行良好但是我注意到在iOS9中根本没有调用layoutIfNeeded
!为什么是这样?我该怎么做才能解决它,或者我应该在哪里放置此设置代码?
答案 0 :(得分:1)
您的布局代码应位于layoutSubviews
,将自动调用。您也可以致电setNeedsLayout
和/或layoutIfNeeded
来触发布局,但您不应该依赖任何其他人调用的任何一种。