gpt4 book ai didi

autolayout - iOS10 SDK中什么时候设置view frame size?

转载 作者:行者123 更新时间:2023-12-04 14:09:47 26 4
gpt4 key购买 nike

在 Swift 和 ObjC 的几年里,我使用这种技术来制作圆形 View :

view.layer.cornerRadius = view.frame.size.width / 2
view.clipsToBounds = true

当 Storyboard 中的 UILayoutConstraints 是固定宽度/高度时,将此代码放在 viewDidLoad 或 viewWillAppear 中没有问题。内置于 iOS9.3SDK 它在 iOS10 等中运行良好。

iOS10SDK 显示的 framesize 与 Storyboard 中的固定大小完全不同,甚至高达 viewWillAppear 和 viewDidLayoutSubviews 等。我的选项是:

1)在 viewDidAppear 中执行此操作(糟糕的解决方案)
2)对cornerRadius进行硬编码(工作正常,但很糟糕)

这看起来像一个错误(因为在 Storyboard 中设置的固定宽度/高度不应该在没有控制台警告的情况下改变)。是吗,或者现在有这个代码的不同地方吗? (附上测试代码截图)

enter image description here

最佳答案

在 iOS 10 中,我在 6 月份开始使用 Xcode 8 后立即遇到了这个问题,当时它是测试版。需要这个解决方案:

layoutIfNeeded()就在您修改图层之前:

self.view.layoutIfNeeded()

view.layer.cornerRadius = view.frame.size.width / 2
view.clipsToBounds = true



将拐角半径的代码置于 viewDidLayoutSubviews()方法:
override func viewDidLayoutSubviews() {

view.layer.cornerRadius = view.frame.size.width / 2
view.clipsToBounds = true

}

关于autolayout - iOS10 SDK中什么时候设置view frame size?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39446354/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com