设置UIView的框架不起作用

时间:2013-08-15 23:05:46

标签: ios cocoa-touch ios7

iOS 7中的frame-property存在问题。 我想在我viewDidLoad的{​​{1}} - 方法中调整一些UIViews的大小,但如果我这样做UIViewController 高度设置为我希望它直到方法结束,但在其他所有方法中它都是以前一样!

它有什么问题,还是仅仅是编译器或其他任何错误?

4 个答案:

答案 0 :(得分:71)

必须将视图大小调整到-viewDidLayoutSubviews:(documentation)

将视图框更改放入-viewWillAppear:-viewDidLoad:将无效,因为视图尚未布局!

答案 1 :(得分:11)

  • 检查您是否在xib文件中使用autolayout。如果您不想使用autolayout,请在您的xib文件中取消选中它。

  • 更改self.leftSideTableView中的-viewWillAppear:框架。

答案 2 :(得分:7)

检查以确保故事板文件中未激活自动布局。

要将其关闭,请查看界面构建器中的检查器。单击左侧看起来像页面的图标。在“Interface Builder Document”部分中,取消选中“Use Auto Layout”。

我发现IB中的整个视图控制器最好使用自动布局,或完全使用代码。混合这两者可能会导致难以调试的奇怪行为。

答案 3 :(得分:1)

有几个原因导致这种情况发生。首先,您需要确保您的tableview不是零。如果您以编程方式创建它,则需要确保在尝试设置帧之前在某处调用alloc / init。如果self.leftSideTableView是IBOutlet,这可能是由于忘记将插座实际链接到接口对象而引起的。

然后,第二个也不太可能,您正在以编程方式创建表格视图并正确初始化它,但您忘记将其添加为您的某个屏幕视图的子视图。