如果在“viewWillAppear”或“viewDidLoad”方法中完成,则查看不调整大小

时间:2014-02-11 14:44:28

标签: objective-c view uiview resize

我正在开发游戏:我需要加载用户的分数(本地和互联网可用,从服务器下载)并根据值调整UIView的大小。

问题是,当本地加载得分(从viewWillAppear调用“resizeUserBar”)时,不会调整视图的大小。但是,如果在从服务器下载分数后调用相同的方法(“resizeUserBar”),则会正确调整其大小。我调试了帧的值,它们在两种情况下都是正确的。

以下是我用来调整大小的代码:

CGRect frame = firstBar.frame;
frame = CGRectMake(frame.origin.x, frame.origin.y, firstBarSpace, frame.size.height);
firstBar.frame = frame;

frame = secondBar.frame;
frame = CGRectMake(firstBar.frame.origin.x + firstBarSpace, frame.origin.y, secondBarSpace, frame.size.height);
secondBar.frame = frame;

Autolayout在我的故事板上处于活动状态,但我还没有使用它。上述方法中使用的视图没有任何限制。

谢谢 谢谢

1 个答案:

答案 0 :(得分:0)

你说:

  

Autolayout在我的故事板上处于活动状态,但我还没有使用它。那里   对上述方法中使用的视图没有限制。

在Xcode 5中,如果您打开了自动布局但未设置任何约束,编译器将在构建时自动为您生成固定大小和位置约束。

关闭自动布局,您会看到调整大小将开始起作用。或者,设置一些实际约束。

更新:更多信息......

Apple.com上的

Auto Layout Guide: Working with Constraints in Interface Builder

  

从对象库中拖出元素并将其放在上面时   在Interface Builder画布中,它开始不受限制地制作它   通过拖动元素来轻松构建界面原型。如果你   在没有为元素添加任何约束的情况下构建和运行,你会   发现Interface Builder修复了元素的宽度和高度   固定其相对于超视图左上角的位置;   这意味着调整窗口大小不会移动或调整大小   元素。使您的界面对大小的变化做出正确反应   方向,你需要开始添加约束。