1

我正在尝试在我的应用程序中使用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];
}

没有任何帮助。广告绝对居中。我开始认为设置有问题,但除了定位之外一切正常。见下图。

应用程序屏幕

更新 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];

}
4

3 回答 3

2

这是一个可行的解决方案:您有两个选择 -

  1. 将您的 adView 包装在外部 UIView 中,然后您就可以完全控制
  2. 在 'InneractiveAdLoaded:' 事件上更新 adView 的框架

ANYWAY:在调用 '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

在此处输入图像描述

于 2015-07-12T15:53:14.753 回答
0

尝试这样设置它的框架:

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

其中 x,y,width,height 是您想要的位置和大小。

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

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

其中 yOffset 是您希望它在该坐标上移动的量。确保使用 self.view.frame 计算它,而不是使用确切的数字,因此它在每个设备的底部。

于 2015-07-10T11:19:49.340 回答
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's 的高度。但这会使它出现在屏幕底部。因此,我们必须减去我们的高度self.myAdView才能将其向上移动到屏幕上:self.view.frame.size.height - self.myAdView.frame.size.height
  • width- 将其设置为的宽度UIViewself.view.frame.size.width
  • height- 将其设置为我们的高度self.myAdViewself.myAdView.frame.size.height
于 2015-07-10T14:02:46.383 回答