当我访问titlelabel属性时,为什么Uibutton调整大小



我正在尝试将按钮的大小调整为(固有大小 稍高一点),以绘制自定义背景。但是,每次我访问self.titlelabel在按钮中,大小和位置都会重新安排到故事板的尺寸。我不必对标签做任何事情来重现此功能,只需从按钮中检索它。

我将记录代码全部放在我的按钮上,并查看控制器,以查找发生这种情况的位置。它不是来自子视图或任何其他通知的传播,我看到要在视图控制器中获得。访问滴定标签之前的线,位置和大小是正确的。之后的线路,它回到了情节板的位置。评论访问可以防止大小/位置折断。有人可以告诉我为什么发生这种情况吗?

我没有设定的约束(我可以告诉),但是我在这里与自动layout作斗争吗?我应该以不同的方式(例如组成控件或其他方式)这样做吗?

以前在Uibutton修改titlelabel之前曾问过类似的东西(或相同的东西?),似乎改变了其框架,Uibutton titlelabel在印刷机上进行了调整?p>

如果项目启用了自动延迟,那么,是的,您正在与自动layout进行战斗。您有两种选择,要么子类Uibutton,因此您可以覆盖内在的大小计算,或者修改约束,以便在任何约束中不使用固有大小。如果您执行后者,则可能要为宽度的约束创建一个IBOUTLET,以便您可以根据需要调整constant属性。

这不是错误,这是自动布局的结果。使用自动布局时,您不应设置任何帧。相反,您应该通过修改约束来更改大小或位置。发生的事情是,每当需要重新绘制视图时,框架就会恢复为由约束定义的框架。

最新更新