实施Inneractive / Inneractive横幅广告 - 广告定位问题

时间:2015-07-10 09:22:56

标签: ios objective-c banner-ads

我正在尝试在我的应用中使用Inneractive Ad SDK 5+,并且我想将广告放在底部。在每种情况下,我都尝试过,它总是在屏幕中间,水平和垂直居中。

代码:

self.myAdView = [[IaAdView alloc]    
initWithAppId:@"MyAppID_iPhone" adType:IaAdType_Banner delegate:self];

self.myAdView.adConfig.refreshIntervalInSec = 30;

[[InneractiveAdSDK sharedInstance] loadAd:self.myAdView];

委托方法:

- (void)InneractiveAdLoaded:(IaAd *)adView {
    NSLog(@"AD LOADED METHOD CALLED");

    // Here I tried many things I found online without any effect
    [self.view addSubview:self.myAdView];
}

这里我如何实现viewcontroller.m文件顶部的属性:

@interface ViewController () <InneractiveAdDelegate>

@property (nonatomic, retain) IaAdView* myAdView;
@end

@implementation ViewController
@synthesize myAdView = _myAdView;

我确信这一定只是一件小事,但我无法弄明白。我找到了许多包含initWithFrame的解决方案,但在这种情况下这不可用。

任何帮助都将不胜感激。

更新1:

我试过了:

- (void)InneractiveAdLoaded:(IaAd *)adView {
    NSLog(@"AD LOADED METHOD CALLED");
    self.myAdView.frame=CGRectMake(x,y,width,height); // With any number and random number

    self.myAdView.frame=CGRectOffset(self.myAdView.frame, 0, yOffset); // With any number and random number
    [self.view addSubview:self.myAdView];
}

没有任何帮助。广告保持绝对中心。我开始认为设置有问题,但除了定位,一切都运行正常。见下面的照片。

app screen

更新2:

尝试以下操作但没有成功。 ios8在屏幕和ios7上显示横幅,出于某种原因,一旦添加了该行,就不会显示。

- (void)InneractiveAdLoaded:(IaAd *)adView {

     NSLog(@"AD LOADED METHOD CALLED");
    self.myAdView.frame = CGRectMake(0, self.view.frame.size.height -     self.myAdView.frame.size.height , self.view.frame.size.width,    self.myAdView.frame.size.height);

    [self.view addSubview:self.myAdView];

}

3 个答案:

答案 0 :(得分:2)

这是一个有效的解决方案: 你有两个选择 -

  1. 在外部UIView中包装您的adView,然后您拥有完全控制权
  2. 在'InneractiveAdLoaded:'事件
  3. 上更新adView框架

    无论如何:在调用'loadAd:'SDK方法之前,必须将adView添加到它的superView。

    如果您有任何疑问,请与我们联系。

    更新: 选项2:

    #import "ViewController.h"
    #import "InneractiveAdSDK.h"
    
    @interface ViewController () <InneractiveAdDelegate>
    
    @property (nonatomic, strong) IaAdView *adView;
    
    @end
    
    @implementation ViewController {}
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        self.adView = [[IaAdView alloc] initWithAppId:@"<Your ad unit ID>" adType:IaAdType_Banner delegate:self];
    
        [self.view addSubview:self.adView];
        [[InneractiveAdSDK sharedInstance] loadAd:self.adView];
    }
    
    - (void)positionAd {
        const CGFloat x = (self.view.bounds.size.width - self.adView.frame.size.width) / 2.0f;
        const CGFloat y = self.view.bounds.size.height - self.adView.frame.size.height;
    
        self.adView.frame = CGRectMake(x, y, self.adView.frame.size.width, self.adView.frame.size.height);
    }
    
    #pragma mark - InneractiveAdDelegate
    
    - (void)InneractiveAdLoaded:(IaAd *)adView {
        [self positionAd];
    }
    
    - (void)InneractiveDefaultAdLoaded:(IaAd *)adView {
        [self positionAd];
    }
    
    - (UIViewController *)viewControllerForPresentingModalView { return self; }
    
    @end
    

    enter image description here

答案 1 :(得分:0)

尝试以这种方式设置框架:

self.myAdView.frame=CGRectMake(x,y,width,height);

其中x,y,宽度,高度是您想要的位置和大小。

或者,如果它已经通过X坐标,宽度和高度很好地定位,您可以使用:

self.myAdView.frame=CGRectOffset(self.myAdView.frame, 0, yOffset);

yOffset是指你想要在该坐标上移动多少。请确保使用self.view.frame计算它,而不是使用确切的数字计算它,因此它在每个设备的底部。

答案 2 :(得分:0)

要将横幅放在UIView的底部,您需要更改其frame

self.myAdView.frame = CGRectMake(x, y, width, height);
self.myAdView.frame = CGRectMake(0, self.view.frame.size.height - self.myAdView.frame.size.height , self.view.frame.size.width, self.myAdView.frame.size.height);
  • x - 设置为0
  • 的来源
  • y - 将原点设置为UIView的高度。但这会使它显示在屏幕的底部。因此,我们必须减去self.myAdView的高度,将其移到屏幕上:self.view.frame.size.height - self.myAdView.frame.size.height
  • width - 将其设置为UIView的宽度:self.view.frame.size.width
  • height - 将其设置为self.myAdViewself.myAdView.frame.size.height
  • 的高度