设置UIView的框架不起作用

MyJ*_*BMe 21 cocoa-touch ios ios7

我在iOS 7中遇到了frame-property的问题.我想在viewDidLoad我的方法中调整一些UIViews的大小UIViewController,但如果我这样做就像int screenHeight = [[UIScreen mainScreen] bounds].size.height; [self.leftSideTableView setFrame: CGRectMake(0, 0, 320, screenHeight)]; 高度设置为我希望它直到方法结束,但在其他所有方法就像以前一样!

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

MyJ*_*BMe 72

一个人必须把视图调整大小-viewDidLayoutSubviews:!(文档)

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

  • 谢谢你.指望苹果公司随心所欲地改变主意,并为1.0版以来发挥作用的极其基本的东西引入令人讨厌的行为变化. (4认同)

liu*_*ong 11

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

  • 改变你的self.leftSideTableView框架-viewWillAppear:.


lan*_*abr 8

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

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

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