无法调整UIView的大小

时间:2012-10-19 12:31:34

标签: objective-c ios xcode uiview

我正在使用xcode 4.5(这有什么不同)以及一个故事板,我正在尝试做一些看似非常简单而没有任何运气的事情。在我的故事板视图中,我放置了一个UIView组件,如图所示http://www.shopow.co.uk/assets/storyboard-view.png,绿色部分是UIView,高度为100

在viewDidLoad方法中,我添加了以下代码

NSLog(@"View Height: %f", self.testView.bounds.size.height);

CGRect viewFrame = self.testView.frame;
CGSize newSize = CGSizeMake(viewFrame.size.width, 300);
viewFrame.size = newSize;
self.testView.frame = viewFrame;

NSLog(@"View Height: %f", self.testView.bounds.size.height);

从我读到的关于调整大小的东西我会假设绿色部分调整为300高但是这不会发生,尽管日志窗口中的输出显示以下

2012-10-19 13:05:28.015 TableTest[54318:c07] View Height: 460.000000
2012-10-19 13:05:28.016 TableTest[54318:c07] View Height: 300.000000

注意初始高度为460而不是100,这可能意味着什么!

iOS模拟器显示此http://www.shopow.co.uk/assets/simulator-view.png

我必须忽视一些明显的东西,据我所知,这不符合预期。任何指导都将不胜感激。

3 个答案:

答案 0 :(得分:0)

我不确定它是否能解决您的问题,但您应该在viewWillAppear而不是viewDidLoad进行大小调整。

viewDidLoad字面意思是它所说的“视图已加载”。但是,此时你的笔尖可能没有像你期望的那样设置视图。

作为测试,请尝试在viewDidLoadviewWillAppear

中记录以下内容
  

NSLog(@“frame:%@”,NSStringFromCGRect(self.view.frame));

您应该看到在两种方法中都会得到不同的结果。 viewWillAppear方法更可能是正确的,因为视图已经设置并准备好呈现。

我个人并没有那么多地使用Interface Builder,因为它会导致比我可以处理的更多头痛但是可能会设置自动调整大小的蒙版或弹性约束,这会影响视图的尺寸?

答案 1 :(得分:0)

就像@CaptainRedmuff说的那样,你用错误的方法调用它。加载视图后调用viewDidLoad,这意味着已经设置了框架。您要查找的方法为loadViewviewWillAppear:animated之后调用viewDidAppear:animatedviewDidLoad

答案 2 :(得分:0)

OP并不清楚他是如何解决这个问题的。万一其他人有这个问题。

如果您的视图显示的内容与您在故事板中看到的相同,尽管您以某种方式以编程方式调整大小/更改其属性,这是因为自动布局会造成严重破坏。

只需选择要以编程方式更改的视图,然后转到“属性”窗格中的“文件检查器”。取消选中“使用自动布局”旁边的复选框。再次跑步,你会发现你的问题神奇地消失了。