UIView尺寸/位置在iPad上不能像在iPhone上那样工作

时间:2011-11-02 14:27:09

标签: iphone ios ipad uiview

我有一个大小宽度= 320像素高度= 40像素的UIView,我想在底部显示,看起来像一个标签栏。

我使用以下代码来完成此操作,它在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上播放这个节目呢?

[UPDATE]

这发生在我的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);

2 个答案:

答案 0 :(得分:3)

您是否(使用断点或NSLog)查看了CGRectMake来电中的值,只是作为一种“理智检查”?


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

答案 1 :(得分:1)

这是因为Auto Resizing是为UIView设置的。

要修复此问题,请将Auto Resizing设置为将其绑定到左上角。这样,无论何时更改帧,它都相对于左上角像素。