所以我正在实现单例iAD系统,我得到了在视图上添加横幅的功能,但是如何确保横幅始终位于底部,以便它适用于3.5英寸和4英寸的屏幕? / p>
这是我的代码,但横幅无法正确定位,它会离开屏幕
-(void)attachBannerToViewController:(UIViewController*)viewController
{
if (_iAdBanner == nil) {
NSLog(@"iAdbanner alloc");
_iAdBanner = [[ADBannerView alloc] initWithAdType:ADAdTypeBanner];
_iAdBanner.delegate = self;
_iAdBanner.alpha = 0.0;
}
CGRect frame=CGRectZero;
frame.size = _iAdBanner.frame.size;
frame.origin = CGPointMake(0.0, viewController.view.frame.size.height-_iAdBanner.frame.size.height);
[_iAdBanner setFrame:frame];
[viewController.view addSubview:_iAdBanner];
}
答案 0 :(得分:1)
猜测一下,我会说你在查看控制器已完成所有设置之前运行此代码。当您运行此行代码时,它将是正确的,但是当view controller.view
添加到window
时,它将是错误的。
考虑设置自动调整大小的标记或约束,以使广告横幅保持在正确的位置。你在用哪个?
_iAdBanner.autoresizingMask = UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleWidth;
约束......其他人刚发布并回答用限制设置它,所以我不会复制他们的工作。 :)
答案 1 :(得分:0)
您可以使用NSLayoutConstraint
:
-(void)attachBannerToViewController:(UIViewController*)viewController
{
if (_iAdBanner == nil) {
NSLog(@"iAdbanner alloc");
_iAdBanner = [[ADBannerView alloc] initWithAdType:ADAdTypeBanner];
_iAdBanner.delegate = self;
_iAdBanner.alpha = 0.0;
_iAdBanner.translatesAutoresizingMaskIntoConstraints = NO;
[viewController.view addSubview:_iAdBanner];
[viewController.view addConstraints:
[NSLayoutConstraint
constrainsWithVisualFormat:@"|-0-[banner]-0-|"
options:0
metrics:nil
views:@{"banner" : _iAdBanner}]];
[viewController.view addConstraints:
[NSLayoutConstraint
constrainsWithVisualFormat:@"V:[banner]-0-|"
options:0
metrics:nil
views:@{"banner" : _iAdBanner}]];
}
}