在viewDidLoad
中,我有一个像这样的初始设置 -
// Output all the appropriate text to UITextLabel depending on the state of the app
[self presentData];
// Button sizing
UIelement.frame=CGRectMake(blah blah blah);
为什么当我按照先前的顺序进行操作时,我得到的文本输出没有大小调整,直到当我按照
的顺序键入代码时,另一个函数再次调用当前数据UIelement.frame=CGRectMake(blah blah blah);
[self presentData];
它将适当调整大小以便开始。 我明白订单很重要,但我想知道的是为什么?我怎么会在下次遇到这样的问题时发现为什么会发生这种情况?我的猜测是,呈现数据,更改uilabel,更新视图但由于某种原因cgrectmake不更新视图,只是更改了模型中uilabel框架的值。我对么?我怎样才能找到这样的问题的答案,而不必在下次询问在线社区?
答案 0 :(得分:0)
有几种可能性:
您显然正在使用auto layout。使用自动布局时,设置标签的text
属性的过程将导致为视图重新应用约束。当您手动设置frame
时,只有在重新应用自动布局约束(例如,您再次更新UILabel
或者调用layoutIfNeeded
)之后才会保持有效,此时frame
presentData
重新计算/调整1}}。通常在自动布局中,人们不会手动调整帧。
也许sizeToFit
正在调用frame
,或类似的东西?这显然也会改变{{1}}。