这是我的iAd代码,我收到有关
的警告setRequiredContentSizeIdentifiers - deprecated in iOS 6
ADBannerContentSizeIdentifier320x50 - deprecated in iOS 4.2
ADBannerContentSizeIdentifier480x32 - deprecated in iOS 4.2
setCurrentContentSizeIdentifier - deprecated in iOS 6
ADBannerContentSizeIdentifier480x32 - deprecated in iOS 4.2
如何解决此问题,以便没有警告。
- (int)getBannerHeight:(UIDeviceOrientation)orientation
{
if (UIInterfaceOrientationIsLandscape(orientation)) {
return 32;
} else {
return 50;
}
}
- (int)getBannerHeight
{
return [self getBannerHeight:[UIDevice currentDevice].orientation];
}
- (void)createAdBannerView
{
Class classAdBannerView = NSClassFromString(@"ADBannerView");
if (classAdBannerView != nil) {
self->adView = [[classAdBannerView alloc]
initWithFrame:CGRectZero];
[adView setRequiredContentSizeIdentifiers:[NSSet setWithObjects:
ADBannerContentSizeIdentifier320x50,
ADBannerContentSizeIdentifier480x32, nil]];
if (UIInterfaceOrientationIsLandscape([UIDevice currentDevice].orientation)) {
[adView setCurrentContentSizeIdentifier:
ADBannerContentSizeIdentifier480x32];
} else {
[adView setCurrentContentSizeIdentifier:
ADBannerContentSizeIdentifier320x50];
}
[adView setFrame:CGRectOffset([adView frame], 0,
-[self getBannerHeight])];
[adView setDelegate:self];
[self.view addSubview:adView];
}
}
- (void)fixupAdView:(UIInterfaceOrientation)toInterfaceOrientation
{
if (adView != nil) {
if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
[adView setCurrentContentSizeIdentifier:
ADBannerContentSizeIdentifier480x32];
} else {
[adView setCurrentContentSizeIdentifier:
ADBannerContentSizeIdentifier320x50];
}
[UIView beginAnimations:@"fixupViews" context:nil];
if (bannerIsVisible) {
CGRect adBannerViewFrame = [adView frame];
adBannerViewFrame.origin.x = 0;
adBannerViewFrame.origin.y = 0;
[adView setFrame:adBannerViewFrame];
CGRect contentViewFrame = _contentView.frame;
contentViewFrame.origin.y =
[self getBannerHeight:toInterfaceOrientation];
contentViewFrame.size.height = self.view.frame.size.height -
[self getBannerHeight:toInterfaceOrientation];
_contentView.frame = contentViewFrame;
} else {
CGRect adBannerViewFrame = [adView frame];
adBannerViewFrame.origin.x = 0;
adBannerViewFrame.origin.y =
-[self getBannerHeight:toInterfaceOrientation];
[adView setFrame:adBannerViewFrame];
CGRect contentViewFrame = _contentView.frame;
contentViewFrame.origin.y = 0;
contentViewFrame.size.height = self.view.frame.size.height;
_contentView.frame = contentViewFrame;
}
[UIView commitAnimations];
}
}
答案 0 :(得分:8)
您正在使用已弃用的方法/符号。
弃用意味着方法/符号仍在此处,并且通常仍然有效,但在未来的iOS版本中可能会将其删除。
官方文档总是列出已弃用的方法/符号,通常会提供新的方法/符号。
所以我不想这样说,作为答案,但只是阅读文档。
关于iOS 6的警告并不算太糟糕,因为iOS 6很新
但如果可以,还要修理它们。做了什么。
但似乎你也在使用在iOS 4.2上弃用的方法/符号!
这实际上是一个问题。 iOS 4支持目前正在下降,因此您的实际代码可能无法长时间运行。
请阅读文档(再次),了解新方法并修复代码。
例如:
ADBannerContentSizeIdentifier320x50 - deprecated in iOS 4.2
在documentation中,您可以阅读以下内容:
ADBannerContentSizeIdentifier320x50表示横幅视图是 320分50分的大小。这个尺寸在iPhone上使用 肖像广告。 (已弃用。使用 相反,ADBannerContentSizeIdentifierPortrait。)在iOS 4.0中可用 然后。在iOS 4.2中不推荐使用。宣布于 ADBannerView_Deprecated.h。
因此,只需使用ADBannerContentSizeIdentifier320x50
而不是ADBannerContentSizeIdentifierPortrait
ADBannerContentSizeIdentifier480x32
也是如此。请改用ADBannerContentSizeIdentifierLandscape
。
然后你就会安全,而且你将不再对此发出警告。
然后对其他符号执行相同操作。
修改强>
正如您的评论中所述,iOS 6上也弃用了ADBannerContentSizeIdentifierPortrait
和ADBannerContentSizeIdentifierLandscape
。
这与setCurrentContentSizeIdentifier
和setRequiredContentSizeIdentifiers
的弃用有关。
Apple建议不再使用该方法,并使用iOS的自动调整大小功能。