iPhoneの向きを取得するには以下のように書く.
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];iPhoneをいくら振り回してもUIDeviceOrientationPortrait(通常の縦持ち方)しか返ってこない.バージョンが変わってUIApplicationでないと取れないの!?とかAPIが変わった?とか色々悩んだけど,回転ロックしているから当たり前といえば当たり前.これに気づくのに小一時間悩んだ.回転ロックのオンオフを調べるAPIがあるかもしれないけど,今のところ見つけられてない.向きを扱うアプリだと,回転ロックに気をつけないといけない.
回転ロックを検出するAPIが見つからないので,判定コード(ScreenStatus.h/m)を作った.原理は回転ロック中はUIDeviceOrientationPortraitしか戻ってこないので,実際の加速度センサの値と比べて判定する.そのため,通常の縦持ちだと,ロックかどうかは判定できない.ダウンロードはこちらから.ライセンスは使った分だけ隣人に昼飯を奢ること.
-(BOOL)isScreenLock;
画面回転ロックならばYES, そうでなければNOを返す
-(UIDeviceOrientation)orientation;
UIDeviceの返ってくる向き
-(UIDeviceOrientation)physicalOrientation;
加速度センサから計算した向き
[注意]initで加速度センサをONにするので,忘れずにreleaseする
0 コメント:
コメントを投稿