将iAD横幅始终放在屏幕底部(IOS 7)

时间:2014-02-24 14:09:04

标签: ios cocoa-touch uiview ios7 iad

所以我正在实现单例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];
}

2 个答案:

答案 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}]];
    }
}