Swift viewDidLoad或DidLayoutSubView用于设置圆角?

Swift viewDidLoad或DidLayoutSubView用于设置圆角?,swift,uikit,Swift,Uikit,我正在寻找在我的代码中设置视图圆角半径的完美位置。 有时,在我将cornerRadius设置为frame.height/2之后,UI似乎缩小了我的视图,因此我得到了一个“更圆”的视图(看起来像一只眼睛) 我正在用Interface Builder构建我的应用程序,所以我认为调用myButton.layer.cornerRadius=myButton.frame.height/2 我还尝试在viewdilayoutsubviews中设计视图,但也有一些奇怪的结果 因此,我的一般问题是: 我应该将c

我正在寻找在我的代码中设置视图圆角半径的完美位置。 有时,在我将cornerRadius设置为frame.height/2之后,UI似乎缩小了我的视图,因此我得到了一个“更圆”的视图(看起来像一只眼睛)

我正在用Interface Builder构建我的应用程序,所以我认为调用
myButton.layer.cornerRadius=myButton.frame.height/2

我还尝试在
viewdilayoutsubviews
中设计视图,但也有一些奇怪的结果

因此,我的一般问题是: 我应该将
corneradius
代码放在哪里以确保得到正确的结果

谢谢你的回复

编辑:


问题尤其是与superview高度成比例的按钮(或视图)。固定高度,工作良好

viewDidLoad()
方法中设置角半径应该可以正常工作

如果你得到了你所说的“更圆”的效果,试着用

myButton.layer.cornerRadius=myButton.bounds.height/2

然后打电话

myButton.setup(withCornerRadius: myButton.bounds.height/2)
myButton.layoutifneed()

编辑

如果有很多按钮要设置,可以在这样的扩展中创建一个通用方法

extension UIView
{
    func setup(withCornerRadius radius: CGFloat) 
    {
        self.layer.cornerRadius = radius
        self.layoutIfNeeded()
    }
}
然后打电话

myButton.setup(withCornerRadius: myButton.bounds.height/2)

您是否只在viewDidLoad中放置了
myButton.layer.cornerRadius=myButton.frame.height/2

如果将其放置在两个视图中,则将其从子视图中删除


并确保按钮的大小为“正方形”。我的意思是身高和体重相等。

因此,在viewDidLoad中,对于每个(圆形)视图,都需要调用
LayoutIfNeed
?好的,我尝试过,但如果我的按钮的高度与superview成比例,而不是固定高度,我仍然会遇到同样的问题(“更圆”)。您知道如何实现具有比例高度的圆角按钮吗?请尝试在viewWillAppear方法中移动设置调用。我尝试了这两种方法:仅在ViewDiLoad和仅在DidLayoutSubView中都无法使用比例高度