スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

[iOS]回転を止める

AppDelegateクラス内にisRotateプロパティを設置し、YESの時は回転、NOの時は回転しないように設定します。

//AppDelegate.h
#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (nonatomic) BOOL isRotate; //YESは回転する NOは回転しない

@end
//AppDelegate.m
@implementation AppDelegate
@synthesize isRotate = _isRotate;

...省略...

//追加
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
UIInterfaceOrientationMask orientationMask = UIInterfaceOrientationMaskAll;
if(!self.isRotate)orientationMask = 1 << orientation;
return orientationMask;
}

static UIInterfaceOrientation orientation;
- (void)setIsRotate:(BOOL)isRotate {
_isRotate = isRotate;
if(!isRotate) {
orientation = self.window.rootViewController.interfaceOrientation;
}
}

- (BOOL)isRotate {
static dispatch_once_t token;
dispatch_once(&token, ^{
//初期値
_isRotate = YES;
});
return _isRotate;
}
@end


値を設定する場合は下記のようにアクセスします。
//AppDelegateのプロパティを設定
//回転を止める
AppDelegate *app_delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
app_delegate.isRotate = NO;


余談ですが、[[UIDevice currentDevice] orientation]でも回転方向は取得できますが、これだとUIViewControllerの方向と食い違う場合があるため確実ではないです。
(回転を止めてから、デバイスを縦から横にして再び回転するように戻す処理を行うと、デバイス上は横ですがアプリケーション上は縦のままのため食い違います)



参考URL1:[iOS] AppDelegateの参照をカンタンに取得する方法
参考URL2:UIViewController Class Reference
参考URL3:iOS6におけるAutorotationのロックとUpside-downのこと【update】
このエントリーをはてなブックマークに追加

tag : iOS 回転 止める

コメントの投稿

非公開コメント

Translation


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
プロフィール

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。