我在使用一个iOS 8的应用时遇到了问题。我的应用需要从Web服务器获取信息以确定是否播放广告。这可能需要一段时间,因此,在
我已经确定需要在
问题在于一旦在
请注意,在“before”图像中,Show Ads和Just a Label都出现在它们各自的角落。在“after”图像中,横向方向不再正确。它保持纵向边界,Just a Label和横幅广告被裁剪掉。
我已向Apple提交了错误报告,并提供了一个可在DropBox上访问的示例项目,名称为ID19658866.zip。请随意下载并尝试。
如果有人能提供一些见解,以及可能的解决方案,而不必更改逻辑顺序,即在
图片分别是“before *Show Ads* is tapped”和“after *Show Ads* is tapped”。
viewDidLoad
中的代码不会等待它,而是调用setCanDisplayBannerAds:NO
。然后,一旦信息到达,就会在viewDidLoad
之外调用setCanDisplayBannerAds:YES
。我已经确定需要在
viewDidLoad
中调用setCanDisplayBannerAds:NO
,否则setCanDisplayBannerAds:YES
无法正确调用广告并生成大量内部异常。问题在于一旦在
viewdidLoad
之外启用广告,布局就会出错。我在下面的两张图片中进行了说明。上面的是“before”,下面的是“after”,即在点击Show Ads之后。请注意,在“before”图像中,Show Ads和Just a Label都出现在它们各自的角落。在“after”图像中,横向方向不再正确。它保持纵向边界,Just a Label和横幅广告被裁剪掉。
我已向Apple提交了错误报告,并提供了一个可在DropBox上访问的示例项目,名称为ID19658866.zip。请随意下载并尝试。
如果有人能提供一些见解,以及可能的解决方案,而不必更改逻辑顺序,即在
viewDidLoad
完成之后再显示广告,那将不胜感激。图片分别是“before *Show Ads* is tapped”和“after *Show Ads* is tapped”。
[self setCanDisplayBannerAds:YES];
而不是NO
? - user2191247YES
调用它会改变视图层次结构,因此在viewDidLoad
之外调用它不会像应该设置的那样设置autoresizingMask
。 - cjwirthviewDidLoad
中没有调用setCanDisplayBannerAds:
,然后稍后启用广告,广告将不会显示,并且会生成许多与代理相关的异常,因此可能涉及更多内容而不仅仅是自动调整大小。 - user2191247_ADUIViewControllerAdController
的私有 API 类,它在您第一次调用setCanDisplayBannerAds:
时实例化并连接到您的视图控制器(无论您是否传递YES
或NO
)。这仍然必须在显示之前调用(即在viewDidLoad
中)。然后稍后,您可以再次使用YES
调用它,一切都将正常工作。然而,拉伸的问题在于autoresizingMask
。 - cjwirthTouchUpInside:
中添加自动调整大小的代码行,而不要从viewDidLoad
中删除setCanDisplayBannerAds:YES
,这样它就可以工作了。 - cjwirthviewDidLoad
中不去掉setCanDisplayBannerAds:NO
吗? - user2191247