AdMobの広告をインストールしていますが、GADBannerViewがあります。
インストール後、バナーが表示され、それをクリックすると、ページがスライドして画面全体を覆い、その中に広告コンテンツが表示されます。
問題は、ビデオなどの一部の広告コンテンツを横向きで再生する必要があったことです。ただし、アプリは横向きで表示するように設計されていないため、アプリケーションの他の部分を回転させたくありません。
では、どうすればそのような機能を実現できるものを実装できますか?
これには Notification を使用してみてください。デバイスの向きが変更されるたびに、通知によってセレクターが呼び出されます。
これをviewDidLoadに書きます:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(setScreenWithDeviceOrientation:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];
次に、セレクターを次のように定義します。
-(void)setScreenWithDeviceOrientation:(NSNotification *)notification
{
UIDeviceOrientation orientation=[[UIDevice currentDevice] orientation];
if(orientation==UIInterfaceOrientationPortrait) //Portrait orientation
{
// setView frame for portrait mode
}
else if(orientation==UIInterfaceOrientationPortraitUpsideDown) // PortraitUpsideDown
{
// setView frame for upside down portrait mode
}
else if(orientation==UIInterfaceOrientationLandscapeLeft)
{
// setView frame for Landscape Left mode
}
else if(orientation==UIInterfaceOrientationLandscapeRight) //landscape Right
{
// setView frame for Landscape Right mode
}
else
{
NSLog(@"No Orientation");
}
}
このメソッドは、デバイスの向きが変わるたびに発生します。現在の方向に基づいて、ビューを調整する必要があります。
これがお役に立てば幸いです。
iOS 6 を使用していますか? この場合、View Controllerが処理する向きを制限するだけでよいはずです。たとえば、GADBannerView を処理するビュー コントローラーでは、次のように記述できます。
// Tell the system what we support
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
// Tell the system It should autorotate
- (BOOL) shouldAutorotate {
return NO;
}
// Tell the system which initial orientation we want to have
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationPortrait;
}
これにより、ビューコントローラーが縦向きのみをサポートするようになります。
この質問と回答を見たことがありますか?これは、アプリケーションの残りの部分ではサポートされていない特定の方向で単一のビューがどのように機能するかを説明しています。