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

Posted

技术标签:

【中文标题】始终将 iAD 横幅放置在屏幕底部(IOS 7)【英文标题】:Placing iAD banner always at the bottom of the screen(IOS 7) 【发布时间】:2014-02-24 14:09:04 【问题描述】:

所以我正在实现单例 iAD 系统,并获得了在视图上添加横幅的功能,但我如何确保横幅始终位于底部,以便它适用于 3.5 英寸和 4 英寸屏幕?

这是我的代码,但横幅无法正确定位,它会离开屏幕

-(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];

【问题讨论】:

【参考方案1】:

猜测,我会说您在查看控制器完成所有设置之前运行此代码。当您运行这行代码时,它将是正确的,但当view controller.view 被添加到window 时,它就会出错。

考虑设置自动调整大小的标志或约束,以将广告横幅保持在正确的位置。你用的是哪个?

_iAdBanner.autoresizingMask = UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleWidth;

约束....其他人刚刚发布并回答设置约束,所以我不会重复他们的工作。 :)

【讨论】:

如果你要使用自动调整大小的蒙版,你可能还想给它灵活的宽度,这样它就可以填满视图控制器的整个宽度 虽然这通常是一件合适的事情,但它会为答案增加额外的复杂性,并且会做一些没有要求甚至可能不需要的事情。如果人们希望该行为提供的代码位很可能会为他们提供足够的信息来调整其他所需行为的行。【参考方案2】:

你可以使用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]];
    

【讨论】:

以上是关于始终将 iAD 横幅放置在屏幕底部(IOS 7)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 视网膜和非视网膜的屏幕底部放置 admob 横幅

Sprite Kit 中的顶部屏幕 iAd

iOS 7 或 8 - 将 iAd 与 MapKit 相结合

iOS 在 iPad 详细拆分视图中更改 iAD 横幅大小

使用故事板在 UItableView 中添加 iAd 横幅

在屏幕底部放置一个视图