我正在尝试构建一个透明地处理iAds& amp;的iOS通用应用程序模板。屏幕旋转。
即。而不是为每个新项目使用UIViewController,我将使用我自己的iAdVC(它将子类UIViewController)。这将无缝地处理iAd,并将剩余的窗口空间移交给用户。
我正在尝试这个:视图控制器包含uberView,其中包含{adView,内容视图}。
每当广告出现并消失时,{adView,内容视图}都会设置动画:
同时在广告中淡出广告。
此外,每次设备旋转时,都需要调整视图大小。
我遇到了非常愚蠢的问题,当第一个广告获得投放时,我将其放在屏幕顶部并压缩剩余的内容框架以为其腾出空间。
但如果我更改了内容视图的框架,则无法再点击该广告。如果不这样做,内容视图就不适合它的窗口,
- (void) bannerViewDidLoadAd: (ADBannerView *) banner
{
bool isLandscape = UIInterfaceOrientationIsLandscape( self.interfaceOrientation );
NSString * contentSize = isLandscape ? ADBannerContentSizeIdentifierLandscape : ADBannerContentSizeIdentifierPortrait ;
[self.adBannerView setCurrentContentSizeIdentifier: contentSize];
CGSize bannerSize = [ADBannerView sizeFromBannerContentSizeIdentifier: contentSize];
self.adBannerView.frame = CGRectMake(0, 0, bannerSize.width, bannerSize.height);
// resize content frame & fade ad in
CGRect newContentFrame = uberView.bounds;
newContentFrame.size.height -= bannerSize.height;
newContentFrame.origin.y += bannerSize.height;
NSLog(@"%@", NSStringFromCGRect(newContentFrame)); // {{0, 50}, {320, 430}}
if (1) // 0 works
self.contentView.frame = newContentFrame; // NOW CANT CLICK AD
}
答案 0 :(得分:0)
最低部署目标
第一个问题是:什么是合理的最低部署目标?看到这是一个通用的应用程序,我们应该使用iOS 4.2,因为这是iPhone和iPad之间统一的第一个版本。
问题出现了:我们失去了广告点击客户的哪一部分?例如,为了获得额外15%的客户,是否值得支持4.0?
http://insights.chitika.com/2011/ios-update-ipads-iphones-running-high-rate-of-ios-4/表示,如果选择4.2,您仍会获得80%的广告点击客户。
显然这部分会随着时间的推移而增加,所以我会选择最简单的编码选项,而不是试图将每一分钱都挤出市场。
这有一个额外的好处:
// Supported sizes of banner ads available from ad server. Dimensions are in points, not pixels.
// The dimensions are part of the value names to assist with design-time planning for view layout.
extern NSString * const ADBannerContentSizeIdentifier320x50 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_4_0,__IPHONE_4_2);
extern NSString * const ADBannerContentSizeIdentifier480x32 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_4_0,__IPHONE_4_2);
extern NSString * const ADBannerContentSizeIdentifierPortrait __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_2);
extern NSString * const ADBannerContentSizeIdentifierLandscape __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_2);
即我们可以使用通用的新符号(即适用于iPhone和iPad)
strPortrait = ADBannerContentSizeIdentifierPortrait; // ADBannerContentSizeIdentifier320x50;
strLandscape = ADBannerContentSizeIdentifierLandscape; // ADBannerContentSizeIdentifier480x32;
横幅可以是横向或纵向 ,因此您需要加载:
[self.adBannerView setRequiredContentSizeIdentifiers:
[NSSet setWithObjects: strPortrait, strLandscape, nil]
];
然后当屏幕旋转90°时,需要告知AdBannerView:
[self.adBannerView setCurrentContentSizeIdentifier: isLandscape ? strLandscape : strPortrait ];
设置完成后,您可以查询 self.adBannerView.frame 并获取新尺寸
答案 1 :(得分:0)
https://github.com/p-i-/iAdUniversalTemplate
这是一款支持XIB的通用应用iAd-rotatey模板,需要最低目标iOS 4.2
经过大量的抨击,即iAd -- cannot click banner
但现在情况良好。