实施 Inneractive / Inneractive 横幅广告 - 广告定位问题
Implementing Inneractive / Inneractive banner ads - ad positioning issue
我想在我的应用程序中使用 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];
}
没有任何帮助。广告保持绝对居中。我开始认为设置有问题,但除了定位之外,一切正常。见下图。
更新二:
尝试了以下但没有成功。 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];
}
试试这样设置它的框架:
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 而不是确切数字来计算它,因此它在每台设备的底部。
要将横幅放置在 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.myAdView
的高度:self.myAdView.frame.size.height
这是一个可行的解决方案:
您在这里有两个选择 -
- 将您的 adView 包装在外部 UIView 中,然后您就拥有了完全控制权
- 在 'InneractiveAdLoaded:' 事件中更新 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
我想在我的应用程序中使用 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];
}
没有任何帮助。广告保持绝对居中。我开始认为设置有问题,但除了定位之外,一切正常。见下图。
更新二:
尝试了以下但没有成功。 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];
}
试试这样设置它的框架:
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 而不是确切数字来计算它,因此它在每台设备的底部。
要将横幅放置在 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.myAdView
的高度:self.myAdView.frame.size.height
这是一个可行的解决方案: 您在这里有两个选择 -
- 将您的 adView 包装在外部 UIView 中,然后您就拥有了完全控制权
- 在 'InneractiveAdLoaded:' 事件中更新 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