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...
}
}
これを達成するために私が従うべきより良いプロトコルがありますか、それとも多かれ少なかれ複数の方向性をどのように扱うのでしょうか?
代わりにautorotatingmasksを使用できます。 – PengOne
返信いただきありがとうございます!ちょうどautorotatingmasksで読んで終了し、それは私のアプリケーションのためにかなりよく働いているようだ。 – Ken
ビューが複雑になり始める場合は、ポートレイトとランドスケープのペン先を作成し、それらの間を切り替えることもできます – carbonbasednerd