gpt4 book ai didi

swift - 通过 viewDidAppear() 或 viewWillLayoutSubviews() 设置圆角半径?

转载 作者:搜寻专家 更新时间:2023-11-01 06:55:08 28 4
gpt4 key购买 nike

总而言之,通过在 viewWillLayoutSubviews() 中获取按钮边界并将高度除以二,在我的应用程序中为我的 UIButton 设置圆角半径以获得左右边缘。但是,如果我通过 UIBarButtonItem() 导航到另一个屏幕,旋转设备,然后使用 UIButtons() 导航回屏幕,它们不是圆形的。角半径仍然基于先前方向的按钮尺寸。我尝试使用 viewDidAppear,但在设置角半径时有第二个/明显的延迟。

有什么方法可以加快 viewDidAppear 的处理速度吗?我不认为 viewWillAppear 会起作用,因为 View Controller 不知道我正在更改的 uibutton 的默认(方形)尺寸。

我正在处理的应用程序是这样的:

Screenshots of my current application from loading screen to the point of the corner radius not being updated correctly

最佳答案

使用viewDidLayoutSubviews相反,因为此时您将拥有更新的边界,但尚未在 viewWillLayoutSubviews 中。

或者我可能建议有一个按钮子类,它在自己的 layoutSubviews 中进行舍入。 ,使您的 View Controller 不必遍历按钮并四舍五入。

例如:

@IBDesignable
class RoundedButton: UIButton {

override func layoutSubviews() {
super.layoutSubviews()

let radius = min(bounds.width, bounds.height) / 2
layer.cornerRadius = radius
}

}

然后只需使用此类而不是 UIButton。结果:

enter image description here

关于swift - 通过 viewDidAppear() 或 viewWillLayoutSubviews() 设置圆角半径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53971385/

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