2014-01-23 37 views
5

我已经在我的应用程序中使用UIViewController上的新iOS 7属性安装了iAd横幅,即canDisplayBannerAds。麻烦的是,我的视图不再在iOS 7上正确调整大小。我使用autolayout,以防万一您想知道。iOS 7的canDisplayBannerAds和旋转?

纵向广告横幅出现在屏幕底部。在风景中,用户界面不能正常更新,并保持与纵向屏幕一样高。 (限制在屏幕底部的我的按钮和广告横幅被截断。)实质上,我的视图边界不再正确更新。

我试图隐藏canDisplayBannerAds的禁用willRotateToInterfaceOrientation,然后重新启用didRotateFromInterfaceOrientation中的属性。没有骰子。

我已经手动遍历视图层次结构来查找广告横幅并在其上调用sizeThatFits。我不确定自己是否做得对,所以这可能是答案。

我试过在启用广告之前明确地设置了成为originalContentView的视图上的自动调整遮罩。

取消我对canDisplayBannerAds的呼叫可减轻问题的所有症状。

我错过了一些明显的东西吗?是否有另一个属性或设置,我应该切换?这是一个错误?

编辑:

我不是实际安装的旗帜自己。只需将canDisplayBannerAds设置为YES,iOS就可以调整我的整个层次结构,为横幅广告腾出空间,然后自行安装它。

+0

如果我有一些代码,我将能够修补... – Mike

+0

我可以看到如何添加iad横幅吗?如果使用addsubview,它不适用于自动布局。你可以使用一个技巧。在您想要展示的故事板中添加一个uiview。然后subview横幅this.and如果您张贴一些代码,然后我可以检查问题是 – BHASKAR

回答

0

你必须设置你的bannerview约束,如果你以编程方式添加像这样

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:yourbannerview 
                 attribute:NSLayoutAttributeHeight 
                 relatedBy:NSLayoutRelationEqual 
                 toItem:self.view 
                 attribute:NSLayoutAttributeHeight 
                multiplier:0.5 
                 constant:0]]; 

等等.... :) 你可以按照这个链接

http://matthewmorey.com/creating-uiviews-programmatically-with-auto-layout/

+1

他不是手动添加它,在iOS 7中,您可以使用canDisplayBannerAds来显示广告,如果它可用。 – Jacob

1

当设置“canDisplayBannerAds”来显示广告时,我已经看到其他职位谈论未定义的行为。

我认为这是由于他们的视图层次内的自定义视图,你有什么?

不过,在我看来,你碰到太多的麻烦,应该只需添加横幅的老路上:

ADBannerView *adView = [[ADBannerView alloc] initWithFrame:CGRectZero]; 
adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierLandscape]; 
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierLandscape; 
[self.view addSubview:adView]; 

(对于横向视图,可以改变视图类型将旋转支持肖像)

我是否缺少明显的东西?是否有另一个属性或设置 ,我应该切换?这是一个错误?

没有其他属性,如果您只想通过设置该属性来启用广告,则无法获得委托调用。

你必须做的是,让viewcontroller的MAIN视图正确设置大小,(你可以用界面生成器测试)。

编辑:

这个人似乎是通过增加更多的约束canDisplayBannerAds Issue when Starting in Landscape Mode

你确定你的观点是正确的已调整已经解决了吗?您是否在空白项目中遇到与广告相同的问题?

(我的建议仍然是,虽然是相同的,将它们添加手动给你更多的自由,只要你想,你可以把他们。我的应用程序显示“纵向广告”,而在景观,例如。)

+0

你能提供一个关于那个未定义行为的链接或某种文档吗? – Moshe

1

它是一个错误。得到了益民荣的解决方法。

如果添加在viewDidLoad以下两行:

[self setCanDisplayBannerAds: YES]; 
[self setCanDisplayBannerAds: NO]; 

然后将这些广告将在适当的应用程序设置,但不会显示。它必须位于viewDidLoad之内,否则广告将无法正确设置,您将得到布局问题或生成的例外情况。

然后,您可以在准备就绪时致电[self setCanDisplayBannerAds: YES];。这并不一定在viewdidLoad,它可以在任何地方!适用于iOS 8,它也有相同的错误。