我正在尝试构建一个透明地处理 iAd 和屏幕旋转的 iOS 通用应用程序模板。
即,我不会为每个新项目使用 UIViewController,而是使用我自己的 iAdVC(它将继承 UIViewController)。这将无缝处理 iAd,并将剩余的窗口空间交给用户。
我正在尝试这个:视图控制器包含包含 {adView,内容视图} 的 uberView。
每当广告出现和消失时,{adView, content view} 都会生成动画:
内容视图将框架的顶部略微向下压,以便为我的 iAd 腾出空间,
并同时沿顶部淡入广告。
此外,每次设备旋转时,都需要调整视图大小。
我遇到了一个非常愚蠢的问题,当第一个广告被投放时,我将它放在屏幕顶部并挤压剩余的内容框架为其腾出空间。
但如果我更改内容视图的框架,我将无法再点击广告。如果我不这样做,则内容视图不适合其窗口,
- (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
}