我正在使用layoutIfNeededUITableViewCell中进行一些视图设置。例如。:

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!这是为什么?我可以做些什么来绕过它,或者我应该把这个设置代码放在哪里?

最佳答案

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

关于ios - 在iOS10而非iOS9上调用layoutIfNeeded,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40303972/

10-12 00:18