总而言之,通过在ViewWillLayoutSubviews()中抓取按钮的边界并将高度除以2,可以设置应用程序中UIButton的圆角半径以得到左右圆形的边缘。但是,如果我通过UIBarButtonItem()导航到另一个屏幕,旋转设备,然后使用UIButtons()导航回到屏幕,则它们不是圆形的。角半径仍基于上一个方向的按钮尺寸。我尝试使用viewDidAppear,但是在设置拐角半径时有第二个/明显的延迟。
是否仍然可以加快viewDidAppear的处理过程?我不认为viewWillAppear会起作用,因为视图控制器不知道我要更改的uibutton的默认(正方形)尺寸。
我正在处理的应用程序是这样:
答案 0 :(得分:2)
请改用viewDidLayoutSubviews
,因为此时您将拥有更新的边界,但viewWillLayoutSubviews
中尚未更新边界。
或者我建议使用一个按钮子类,该子类在自己的layoutSubviews
中进行舍入,从而使视图控制器不必遍历按钮并对其进行舍入。
例如:
@IBDesignable
class RoundedButton: UIButton {
override func layoutSubviews() {
super.layoutSubviews()
let radius = min(bounds.width, bounds.height) / 2
layer.cornerRadius = radius
}
}
然后仅使用此类而不是UIButton
。产生: