我正在尝试在我的应用中使用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];
}
答案 0 :(得分:2)
这是一个有效的解决方案: 你有两个选择 -
无论如何:在调用'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
答案 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.myAdView
:self.myAdView.frame.size.height