Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ios 5 ipad上,iAds会变成黑色。(深黑色)_Ios_Ios5_Iad - Fatal编程技术网

在ios 5 ipad上,iAds会变成黑色。(深黑色)

在ios 5 ipad上,iAds会变成黑色。(深黑色),ios,ios5,iad,Ios,Ios5,Iad,我有一个基于选项卡的应用程序。我已经在app delegate类中创建了一个iAd对象,并在我的三视图控制器类中使用它。它在第二个标签的屏幕和第三个标签的屏幕上运行良好。在第二个选项卡上有一个表视图,当单击该表视图的行时,我将导航到新视图,在该视图中我使用了iAd的相同代码。单击iAd时,iAd屏幕以横向模式打开,关闭时屏幕变黑并记录以下内容 [ADHostWindowController supportsOrientation:]: message sent to deallocated in

我有一个基于选项卡的应用程序。我已经在app delegate类中创建了一个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)]
我正在视图控制器中添加横幅,如下所示:

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。如何解决此问题?

请查看苹果iAd示例中的TabbleBanner代码:

我没有详细调查,但您需要遵循Apple iAd指南:

要创建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大小和设置中心

- (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);
    }
}

我猜你的问题与网络成瘾无关,而是与记忆问题有关。 类类型为
ADHostWindowController
的对象似乎被过早释放

我的建议是确保在调用supportsOrientation:之前,不会释放ADHostWindowController,即(retainCount>=1)。(这肯定是在iAd开放之后)

诊断:在打开iAd之前,尝试记录该ADHostWindowController的保留计数(然后可能再保留一次),看看会发生什么