我已经以编程方式向我的应用添加了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
答案 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