0

在中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 框架的值。我对么?我将如何在下次不必询问在线社区的情况下找到此类问题的答案?

4

1 回答 1

0

几种可能性:

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

  2. 也许presentData是在打电话sizeToFit,或者类似的东西?这显然也会改变frame.

于 2014-10-09T17:57:28.897 回答