以编程方式设置横幅视图以固定到屏幕底部

时间:2014-01-20 20:26:55

标签: iphone objective-c ios6 ios7

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

我的代码是这样的:

   [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

2 个答案:

答案 0 :(得分:1)

UIApplication曝光statusBarFrame。这将为您提供状态栏的高度(通常为20 )。然后,您可以检查用户是否具有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

答案 1 :(得分:0)

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

如果您无法使用自动布局,则必须从横幅原点中减去状态栏的高度。

您可以使用[[UIApplication sharedApplication] statusBarFrame]获取状态栏的高度.size.height