【问题标题】:UIView size/position not working on iPad as on iPhoneUIView 大小/位置在 iPad 上不像在 iPhone 上那样工作
【发布时间】:2011-12-20 09:13:34
【问题描述】:

我有一个尺寸为 width=320px height=40px 的 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 上也制作这个节目?

[更新]

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

按钮视图宽度:320 320 高度:460 40

iPad:

按钮视图宽度:768 768 高度:1004 40

我还为页面顶部创建了另一个这样的视图,效果很好:

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

【问题讨论】:

  • 这段代码什么时候被调用?在initviewDidLoadviewWillAppear 等?

标签: iphone ios ipad uiview


【解决方案1】:

您是否(使用断点或NSLog)查看了您放入CGRectMake 调用的值,就像一种“健全性检查”?


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

【讨论】:

  • 因此您可以使用 gdb 打印出值,作为 NSLog 的替代方法
  • 您删除了我的编辑吗?否则我会将其发布为不同的答案...?
  • 删除了您的编辑?不确定我知道你在说什么。
  • 啊,其他版主必须有(正在等待批准)
【解决方案2】:

这是因为为 UIView 设置了 Auto Resizing

要修复,请将Auto Resizing 设置为将其绑定到左上角。这样,每当您更改框架时,它都相对于左上角的像素。

【讨论】:

    猜你喜欢
    • 2013-01-13
    • 1970-01-01
    • 2012-01-22
    • 2016-10-17
    • 2015-04-20
    • 2015-02-07
    • 2017-03-30
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多