2011-11-02 91 views
1

我有一个UIView的大小宽度= 320px高度= 40px,我想显示在底部看起来像一个标签栏。UIView大小/位置不能在iPad上工作如iPhone上

我使用下面的代码来实现这一点,它可以在iPhone上正常工作。但是当我尝试iPad模拟器时,视图不会出现在屏幕上的任何位置。

buttonsView.frame=CGRectMake(
           0, 
           self.view.frame.size.height - buttonsView.frame.size.height, 
           self.view.frame.size.width, 
           buttonsView.frame.size.height); 

这将视图延伸到屏幕的宽度,但保持原来的高度。

我该如何在iPad上正确显示此节目?

[更新]

这发生在我的viewDidLoad

我有这样的NSLog现在:

NSLog(@"buttonsView Width: \t%g\t%g\tHeight:\t%g\t%g",self.view.frame.size.width, buttonsView.frame.size.width, self.view.frame.size.height, buttonsView.frame.size.height); 

随着输出:
iPhone:

buttonsView宽度:320 320身高:460 40

的iPad:

buttonsView宽度:768 768高度:1004 40

我也像这样创建另一个视图页面顶部的正常工作:

dataView.frame=CGRectMake(
          0, 
          0, 
          self.view.frame.size.width, 
          dataView.frame.size.height); 
+0

何时调用此代码?在'init','viewDidLoad','viewWillAppear'等? – Kevin

回答

1

发生这种情况是因为Auto Resizing被设置为UIView的。

要修复,请将Auto Resizing设置为将其绑定到左上角。这种方式每当你改变框架,它是相对于左上角的像素。

3

你有没有看(使用断点或NSLog)在您打入CGRectMake电话的价值,就像是一种“理智检查”?


感谢您的信息。我的下一个想法是在viewDidLoadviewWillAppear之间,操作系统正在改变某些东西。也许尝试将代码移动到viewWillAppear,以保证您正在使用的帧将是将要显示的帧。 This Stack Overflow answer更深入地解释它。

+0

检查更新 – LouwHopley

+0

断点会做什么? – LouwHopley

+0

所以你可以使用gdb打印出来的值,作为NSLog的替代品 – Kevin