2015-07-10 67 views
1

我想在我的应用程序中使用Inneractive Ad SDK 5+,我想将广告定位在底部。在任何情况下,我都试过它会始终在屏幕中间,水平和垂直居中。实施Inneractive/Inneractive横幅广告 - 广告定位问题

代码:

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

} 
+0

为什么你使用'self.myAdView'?你还在创建一个属性吗? –

+0

是的。 SDK请求实现它,以便像我上面做的编辑一样进行理解。 – SunnySonic

+0

将'@synthesize myAdView = _myAdView;'更改为'@synthesize myAdView;'另外,您能否提供一个指向SDK的链接,以便我可以尝试实现该横幅。 –

回答

2

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

  1. 包装ÿ我们在外部的UIView AdView的,然后你必须完全控制
  2. 更新的AdView对框架“InneractiveAdLoaded:”事件

ANYWAY:AdView中必须加入它叫“loadAd之前是上海华: 'SDK方法。

如果您有任何问题,请告诉我。

更新: 选项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

+0

谢谢。你有我的代码示例吗?特别是选项2听起来有趣。 – SunnySonic

+0

我已经更新了答案。 – Nikita

+0

请标记为正确答案,以防情况有所帮助。谢谢。 – Nikita

0

尝试设置它的框架是这样的:

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

其中X,Y,宽度,高度是你所需的位置和大小。

或者它已经很好地利用X坐标位置,宽度和高度,你可以使用:

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

其中Y偏移是你多么希望它移动上的坐标。一定要使用self.view.frame来计算它,而不是使用确切的数字,所以它在每个设备的底部。

+0

感谢您的及时回复Uros19。不幸的是它没有工作。请参阅我上面的更新问题。 – SunnySonic

+0

尝试使用在(void)InneractiveAdLoaded:(IaAd *)adView方法中作为参数传递的adView对象。所以,而不是self.myAdView.frame,尝试设置adView.frame – Uros19

+0

试过。不幸的是,都是一样的没有任何东西在动。奇怪的是,我正在尝试它在ios8模拟器和ios7 iphone 4上。它也是一个通用的应用程序。当我在ios7上放置一条线时,广告完全消失,在ios8模拟器上,它停留在中心位置。 – SunnySonic

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
+0

谢谢。很好的解释和它是有道理的。但不幸的是,它并没有改变任何东西请参阅我上面的编辑。 – SunnySonic

+0

我怎么发送给你?我认为你需要创建一个无干扰的登录来下载它... https://staging.inner-active.com/iamp/publisher/downloadsdk?sdk=files/InneractiveAdSDK-iOS-v5.0.5。zip&sdkName = iOSNative%202 – SunnySonic

+0

这里还有实施手册:https://inneractive.jira.com/wiki/display/DevWiki/iOS+SDK+guidelines在第3.8点下方有一个方法来集中我没有实现的广告。我尝试了调整,但我失败了。我也不确定它是否曾被称为。如果我想以这种方式实施,我将如何去做呢? – SunnySonic