【问题标题】:Programmatically set banner view to fix to bottom of screen以编程方式设置横幅视图以固定到屏幕底部
【发布时间】:2014-02-10 04:23:37
【问题描述】:

我以编程方式向我的应用添加了一个bannerView。在 iOS7 4" 和 3.5" 上它可以完美运行,但是在 iOS6 上,它将横幅向下移动 20 像素,显然是因为状态栏,但我希望横幅始终适合屏幕底部,而不是下降 20 像素

我的代码是这样的:

   [bannerView_ loadRequest:[GADRequest request]];


    [bannerView_ setFrame:CGRectMake([UIScreen mainScreen].bounds.size.width-bannerView_.frame.size.width,
                                     [UIScreen mainScreen].bounds.size.height-bannerView_.frame.size.height,
                                     bannerView_.frame.size.width,
                                     bannerView_.frame.size.height
                                     )];

有没有办法以编程方式更改增量或其他东西?基本上,横幅需要在 iOS6 上向上移动 20px

【问题讨论】:

    标签: iphone objective-c ios6 ios7


    【解决方案1】:

    UIApplication 暴露 statusBarFrame。这将为您提供状态栏的高度(通常为 20 points)。然后您可以检查用户是否有 iOS6 并偏移横幅。通过比较NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_6_1进行检查。

    试试:

    [bannerView_ setFrame:CGRectMake([UIScreen mainScreen].bounds.size.width - bannerView_.frame.size.width, [UIScreen mainScreen].bounds.size.height - bannerView_.frame.size.height - (NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_6_1 ? [UIApplication sharedApplication].statusBarFrame.size.height : 0), bannerView_.frame.size.width, bannerView_.frame.size.height)];
    

    请记住,如果您想支持旋转,您的任务将变得更加困难,因为您必须在旋转后定位视图,并且您需要在横向使用 statusBarFrame.width

    【讨论】:

    • 感谢 Leo,但我将使用什么代码来设置高度?我很新手,所以如果你能提供代码,将不胜感激。
    【解决方案2】:

    如果你可以使用自动布局,你应该说横幅视图的底部对齐等于其父视图的底部对齐。在视觉格式语言中,这将是“V:[bannerView_]|”。如果您采用这种方法,请不要忘记为宽度、高度和水平位置添加约束。

    如果您不能使用自动布局,那么您必须从横幅原点中减去状态栏的高度。

    可以通过[[UIApplication sharedApplication] statusBarFrame].size.height获取状态栏的高度

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多