何时最终设置了UIButton的帧大小

时间:2016-12-20 16:32:04

标签: ios swift uibutton autolayout

我创建了UIButton的自定义子类,因此我可以添加额外的标签。当此按钮位于UIStackView时,额外标签的大小不正确。我尝试以编程方式向父按钮添加约束。这有效但我有一些破坏的约束警告(略微夸张)。如果我知道按钮被分配了最终尺寸,我可以设置添加的标签框。

在完成所有自动布局后,UIButton的大小是多少?

3 个答案:

答案 0 :(得分:1)

根据我上面的评论,按钮的框架应该是已知的,并且可以在调用layoutSubviews()时使用,这可以在自定义类中重写

答案 1 :(得分:0)

viewDidLayoutSubViews 是最后完成的方法。在分配自动布局约束时,它会为您提供正确的 Rect 信息。您可以使用它来设置约束。

答案 2 :(得分:0)

试试这个:put" print(" frame is:",button.frame," in method name")"在以下方法中。

viewDidLoad中

viewDidLayoutSubviews

viewWillLayoutSubviews

viewWillAppear中

viewDidAppear

您会注意到,在最后调用viewDidLayoutSubviews然后再查看viewDidAppear之前,按钮的实际最终帧不会发生,并且在此之前调用viewDidLayoutSubviews很多次,这在此时特别烦人您正在尝试根据按钮标题标签的大小调整此标签上的字体大小。

如果堆栈视图正在弄乱您的大小调整,请将UIView拖入堆栈视图并将按钮放入其中,然后您可以将按钮约束到该视图。