使用AutoLayout在viewDidAppear之前获取UIButton宽度

use*_*494 4 objective-c uibutton ios autolayout

我有一个UIButton(在界面构建器中创建),我通过设置button.layer.borderRadius = button.frame.size.width / 2.0;(以编程方式,在viewDidAppear :)中变成一个圆圈.但是,它所属的viewController以模态方式呈现动画.由于viewDidAppear直到过渡动画结束后才调用,因此按钮在此之前是正方形,这使得突然变化非常刺耳.

我无法设置半径viewDidLoad,因为按钮属性不正确(宽度太大),我认为是因为自动布局约束尚未正确解决.我试图通过调用来纠正这种[self.view setNeedsLayout]viewDidLoad,然后设置cornerRadius,但按钮的宽度仍然是错误的.我不明白的是,在动画期间,其他一切都正确呈现,建议自动布局约束/已经/已经解决,或者iOS以快速动画的名义做了其他事情(比如存储快照预览用于动画).

有什么建议?

尝试在viewDidLoad中设置角半径的结果:

尝试在viewDidLoad中设置角半径的结果

Rei*_*ica 6

您可以在函数中获得宽度 - viewDidLayoutSubviews.

Apple文档在这里.