我有一个大小宽度= 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);
答案 0 :(得分:3)
您是否(使用断点或NSLog
)查看了CGRectMake
来电中的值,只是作为一种“理智检查”?
感谢您的信息。我的下一个想法是,在viewDidLoad
和viewWillAppear
之间,操作系统正在改变某些内容。也许尝试将代码移动到viewWillAppear
,以确保您正在使用的帧将是将要显示的帧。 This Stack Overflow answer更深入地解释了它。
答案 1 :(得分:1)
这是因为Auto Resizing
是为UIView设置的。
要修复此问题,请将Auto Resizing
设置为将其绑定到左上角。这样,无论何时更改帧,它都相对于左上角像素。