layoutIfNeeded在iOS10上调用,但不在iOS9上调用

时间:2016-10-28 11:20:55

标签: ios swift uiview

我正在使用layoutIfNeededUITableViewCell内进行一些视图设置。 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!为什么是这样?我该怎么做才能解决它,或者我应该在哪里放置此设置代码?

1 个答案:

答案 0 :(得分:1)

您的布局代码应位于layoutSubviews,将自动调用。您也可以致电setNeedsLayout和/或layoutIfNeeded来触发布局,但您不应该依赖任何其他人调用的任何一种。