我正在尝试使用 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];
委托(delegate)方法:
- (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];
}
最佳答案
这是一个可行的解决方案: 您在这里有两个选择 -
- 将您的 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
关于ios - 实现 Inneractive/Inneractive 横幅广告 - 广告定位问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31337109/