首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cornerRadius在SWIFT2.3/ iOS 10 / Xcode 8中停止工作

cornerRadius在SWIFT2.3/ iOS 10 / Xcode 8中停止工作
EN

Stack Overflow用户
提问于 2016-09-15 05:24:48
回答 12查看 10.9K关注 0票数 33

我在一个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时,它工作得很好。

有什么问题吗?

完整代码:

代码语言:javascript
复制
    RockProfileView.layer.cornerRadius = RockProfileView.frame.size.height / 2
    RockProfileView.clipsToBounds = true
    RockProgressView.layer.masksToBounds = true
EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2016-09-15 15:44:49

正如Rob所回答的,我已经将代码从viewDidLoad转移到了viewDidAppear,并且问题得到了解决。

或者在self.view.layoutIfNeeded()代码之前添加viewDidLoad也可以解决这个问题。

在UITableViewCell的情况下,在awakeFromNib内部添加[self layoutIfNeeded];,在更新拐角半径之前应该可以解决所有问题。

票数 35
EN

Stack Overflow用户

发布于 2016-09-20 05:52:15

我是在awakeFromNib中完成这段代码的,但是在升级到ios 10+xcode 8之后,它就停止工作了。

然后,我将这段代码移到layoutSubViews方法中。然后起作用了。

希望这对你会有帮助。

如果您还想在“从this中醒来”中执行此操作,则在延迟之后(使用dispatch_after、NSOperatinQueue或performSelectorWithDelay)执行此操作。

票数 8
EN

Stack Overflow用户

发布于 2016-09-22 19:46:14

如果它在您的ViewControllers中,而不是将所有层操作移动到viewDidLayer中,那么将代码移动到DispatchQueue中。这对我起了作用:

代码语言:javascript
复制
DispatchQueue.main.async {
            let layer = self.signUpBtn.layer
            layer.borderColor = UIColor.white.cgColor
            layer.borderWidth = 2 / UIScreen.main.scale
        }

希望这对你有帮助

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39503661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档