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
}