2011-12-14 5 views
0

私の無知を許してください。伝統的に私はこのようなことをやってきましたが、それは不必要な作業のように感じ、簡単な方法があれば分かりません。複数の向きを扱うときに使用するべきベストプラクティスは何ですか?

// logoView dimensions 
static const CGFloat LOGO_VIEW_X_PORT = 42; 
static const CGFloat LOGO_VIEW_Y_PORT = 20; 
static const CGFloat LOGO_VIEW_W_PORT = 237; 
static const CGFloat LOGO_VIEW_H_PORT = 82; 
// 
static const CGFloat LOGO_VIEW_X_LAND = 142; 
static const CGFloat LOGO_VIEW_Y_LAND = 20; 
static const CGFloat LOGO_VIEW_W_LAND = 237; 
static const CGFloat LOGO_VIEW_H_LAND = 82; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // init logo view 
    self.logoView = [[UIImageView alloc] initWithImage:...]; 

    // determine device orientation and set dimensions 
    if (self.interfaceOrientation == UIDeviceOrientationPortrait || 
     toInterfaceOrientation == UIDeviceOrientationPortraitUpsideDown) { 
     self.logoView.frame = CGRectMake(LOGO_VIEW_X_PORT, LOGO_VIEW_Y_PORT, LOGO_VIEW_W_PORT, LOGO_VIEW_H_PORT); 
    } else { 
     self.logoView.frame = CGRectMake(LOGO_VIEW_X_LAND, LOGO_VIEW_Y_LAND, LOGO_VIEW_W_LAND, LOGO_VIEW_H_LAND); 
    } 

    [self.view addSubview:self.logoView]; 

} 

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { 
    if (toInterfaceOrientation == UIDeviceOrientationPortrait || 
     toInterfaceOrientation == UIDeviceOrientationPortraitUpsideDown) { 
     self.logoView.frame = CGRectMake(LOGO_VIEW_X_PORT, LOGO_VIEW_Y_PORT, LOGO_VIEW_W_PORT, LOGO_VIEW_H_PORT); 
     // long list of other views... 
    } else { 
     self.logoView.frame = CGRectMake(LOGO_VIEW_X_LAND, LOGO_VIEW_Y_LAND, LOGO_VIEW_W_LAND, LOGO_VIEW_H_LAND); 
     // long list of other views... 
    } 
} 

これを達成するために私が従うべきより良いプロトコルがありますか、それとも多かれ少なかれ複数の方向性をどのように扱うのでしょうか?

+1

代わりにautorotatingmasksを使用できます。 – PengOne

+0

返信いただきありがとうございます!ちょうどautorotatingmasksで読んで終了し、それは私のアプリケーションのためにかなりよく働いているようだ。 – Ken

+0

ビューが複雑になり始める場合は、ポートレイトとランドスケープのペン先を作成し、それらの間を切り替えることもできます – carbonbasednerd

答えて

1

すべてのグラフィックオブジェクトのautoResizingMaskオプションをご覧ください。それが助けになるはずです。

関連する問題