我在一个UIView上设置了一个UIView,在同一个UIView中有一个UIImageView。我正在用RockProfileView.frame.size.height / 2计算拐角半径,但是UIView在iOS 10中不再显示。
经过进一步检查,我发现RockProfileView.frame.size.height / 2的值为1000.0,而宽度和高度约束设置为64.0
当我将RockProfileView.layer.cornerRadius = 32硬编码到64/2时,它工作得很好。
有什么问题吗?
完整代码:
RockProfileView.layer.cornerRadius = RockProfileView.frame.size.height / 2
RockProfileView.clipsToBounds = true
RockProgressView.layer.masksToBounds = true发布于 2016-09-15 15:44:49
正如Rob所回答的,我已经将代码从viewDidLoad转移到了viewDidAppear,并且问题得到了解决。
或者在self.view.layoutIfNeeded()代码之前添加viewDidLoad也可以解决这个问题。
在UITableViewCell的情况下,在awakeFromNib内部添加[self layoutIfNeeded];,在更新拐角半径之前应该可以解决所有问题。
发布于 2016-09-20 05:52:15
我是在awakeFromNib中完成这段代码的,但是在升级到ios 10+xcode 8之后,它就停止工作了。
然后,我将这段代码移到layoutSubViews方法中。然后起作用了。
希望这对你会有帮助。
如果您还想在“从this中醒来”中执行此操作,则在延迟之后(使用dispatch_after、NSOperatinQueue或performSelectorWithDelay)执行此操作。
发布于 2016-09-22 19:46:14
如果它在您的ViewControllers中,而不是将所有层操作移动到viewDidLayer中,那么将代码移动到DispatchQueue中。这对我起了作用:
DispatchQueue.main.async {
let layer = self.signUpBtn.layer
layer.borderColor = UIColor.white.cgColor
layer.borderWidth = 2 / UIScreen.main.scale
}希望这对你有帮助
https://stackoverflow.com/questions/39503661
复制相似问题