以编程方式设置横幅视图以修复屏幕底部
问题描述:
我已经编程添加bannerView到我的应用程序。在iOS7上,4“和3.5”可以很好地工作,但是在iOS6上,它将标题向下移动20px,显然是因为状态栏,但我希望横幅始终适合屏幕底部,而不是下降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。
答
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
在景观。
答
如果您可以使用自动布局,则应该说横幅视图的底部对齐方式等于它的超级视角底部对齐方式。在可视化格式语言中,将是“V:[bannerView_] |”。如果采取这种方法,不要忘记为宽度,高度和水平位置添加约束条件。
如果您不能使用自动布局,那么您必须从横幅原点中减去状态栏的高度。
你可以得到[UIApplication的sharedApplication] statusBarFrame]在状态栏的高度.size.height
感谢狮子座,但有什么,我会用它来设置高度的代码?我相当新手,所以如果你可以帮助代码,将不胜感激。 – Omar
@Omar见编辑。 –
谢谢你,这工作真的很好! – Omar