我正在开发游戏:我需要加载用户的分数(本地和互联网可用,从服务器下载)并根据值调整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在我的故事板上处于活动状态,但我还没有使用它。上述方法中使用的视图没有任何限制。
谢谢 谢谢
答案 0 :(得分:0)
你说:
Autolayout在我的故事板上处于活动状态,但我还没有使用它。那里 对上述方法中使用的视图没有限制。
在Xcode 5中,如果您打开了自动布局但未设置任何约束,编译器将在构建时自动为您生成固定大小和位置约束。
关闭自动布局,您会看到调整大小将开始起作用。或者,设置一些实际约束。
更新:更多信息......
Apple.com上的Auto Layout Guide: Working with Constraints in Interface Builder
从对象库中拖出元素并将其放在上面时 在Interface Builder画布中,它开始不受限制地制作它 通过拖动元素来轻松构建界面原型。如果你 在没有为元素添加任何约束的情况下构建和运行,你会 发现Interface Builder修复了元素的宽度和高度 固定其相对于超视图左上角的位置; 这意味着调整窗口大小不会移动或调整大小 元素。使您的界面对大小的变化做出正确反应 方向,你需要开始添加约束。