viewDidLoad中的iOS排序行为

时间:2014-10-09 17:46:08

标签: ios cgrectmake

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框架的值。我对么?我怎样才能找到这样的问题的答案,而不必在下次询问在线社区?

1 个答案:

答案 0 :(得分:0)

有几种可能性:

  1. 您显然正在使用auto layout。使用自动布局时,设置标签的text属性的过程将导致为视图重新应用约束。当您手动设置frame时,只有在重新应用自动布局约束(例如,您再次更新UILabel或者调用layoutIfNeeded)之后才会保持有效,此时frame presentData重新计算/调整1}}。通常在自动布局中,人们不会手动调整帧。

  2. 也许sizeToFit正在调用frame,或类似的东西?这显然也会改变{{1}}。