在关闭视图 iAds 在 ios 5 ipad 中变为黑色。(深黑色)
Posted
技术标签:
【中文标题】在关闭视图 iAds 在 ios 5 ipad 中变为黑色。(深黑色)【英文标题】:On dismiss view iAds becomes black in ios 5 ipad.(dark black) 【发布时间】:2013-04-18 17:45:06 【问题描述】:我有一个基于标签的应用程序。我在应用程序委托类中创建了一个 iAd 对象,并在我的三视图控制器类中使用它。它在第二个选项卡的屏幕和第三个选项卡的屏幕上运行良好。在第二个选项卡上有一个表格视图,当单击该表格视图的行时,我导航到新视图,在该视图中我为 iAd 使用了相同的代码。点击 iAd 时,iAd 屏幕以横向模式打开,关闭时屏幕变黑并记录以下内容。
[ADHostWindowController supportsOrientation:]: message sent to deallocated instance 0x100bc740
我在应用程序委托中创建了这样的对象:
self.bannerView = [[ADBannerView alloc]init];
[self.bannerView setDelegate:self];
我正在像这样在视图控制器中添加横幅:
[[[self appdelegate] bannerView] setFrame:CGRectMake(0, hightofView-180, 768, 66)]
我所有的视图控制器都是纵向的,但 iAd 总是以横向模式打开。 这适用于 ios 6,但不适用于 iPad 上的 iOS 5。我该如何解决这个问题?
【问题讨论】:
【参考方案1】:我猜您的问题与 iAd 无关,而是与内存问题有关。
似乎 ADHostWindowController
类的对象被过早地释放了。
我的建议是确保 ADHostWindowController 未释放,即 (retainCount>=1) 在调用 supportsOrientation: 之前。 (这肯定是在 iAd 打开之后)。
用于诊断:尝试在打开 iAd 之前记录该 ADHostWindowController 的保留计数(然后可能再保留一次),看看会发生什么。
【讨论】:
【参考方案2】:查看 Apple 的 iAd 示例中的 TabbleBanner 代码:https://developer.apple.com/library/ios/#samplecode/iAdSuite/Introduction/Intro.html
我不详细调查,但你需要遵循Apple iAd指南:https://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/iAd_Guide/BannerAdvertisements/BannerAdvertisements.html
要创建一个 ADBanner,在每个 UIViewController 中,添加一个到 self.view
@property (strong,nonatomic) ADBannerView *bannerView;
- (void)viewDidLoad
[super viewDidLoad];
[self createADBanner];
- (void)createADBanner
self.bannerView = [[ADBannerView alloc] initWithFrame:CGRectZero];
self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
[self.bannerView setDelegate:self];
[self.view addSubview:self.bannerView];
一开始,你需要修改bannerView的大小和setCenter,如果需要放在顶部或底部。
- (void)viewDidLayoutSubviewsj
if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation))
self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierLandscape;
self.bannerView.center = CGPointMake(self.view.center.x, self.view.frame.size.height - self.bannerView.frame.size.height/2);
else
self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
self.bannerView.center = CGPointMake(self.view.center.x, self.view.frame.size.height - self.bannerView.frame.size.height/2);
旋转时也一样:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierLandscape;
self.bannerView.center = CGPointMake(self.view.center.x, self.view.frame.size.height - self.bannerView.frame.size.height/2);
else
self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
self.bannerView.center = CGPointMake(self.view.center.x, self.view.frame.size.height - self.bannerView.frame.size.height/2);
【讨论】:
以上是关于在关闭视图 iAds 在 ios 5 ipad 中变为黑色。(深黑色)的主要内容,如果未能解决你的问题,请参考以下文章
iPad:UISplitViewController 与 iAds AdBanner 在详细视图中 - 大小