在"viewWillAppear"或"viewDidLoad"方法中执行时查看不调整大小



我正在开发一款游戏:我需要加载用户的分数(在本地,如果有互联网,则从服务器下载),并根据该值调整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;

自动布局在我的故事板上是活动的,但我还没有使用它。上面的方法中使用的视图没有任何约束。

谢谢谢谢

你说:

自动布局在我的情节提要上处于活动状态,但我还没有使用它。那里对上述方法中使用的视图没有约束。

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

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

更新:更多信息…

自动布局指南:在Apple.com 上的界面生成器中使用约束

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

最新更新