テキストフィールド、ラベル、テーブル、ボタンなど、UIView にいくつかのコンポーネントがあります。デバイスの向きの変更を処理したい。これらのコンポーネントを適切な場所に自動的に配置するにはどうすればよいですか? または、それらを再フレーム化する必要がありますか?
助けてください。
ありがとう
テキストフィールド、ラベル、テーブル、ボタンなど、UIView にいくつかのコンポーネントがあります。デバイスの向きの変更を処理したい。これらのコンポーネントを適切な場所に自動的に配置するにはどうすればよいですか? または、それらを再フレーム化する必要がありますか?
助けてください。
ありがとう
- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[self adjustViewsForOrientation:toInterfaceOrientation];
}
- (void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation {
if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) {
// set you subviews,Label button frame here for landscape mode,,
}
else if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown) {
// set you subviews,Label button frame here for portrait-mode,
}
}
Delegate
//このメソッドを追加することを忘れないでください
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
// Return YES for supported orientations
return YES;
}
うまくいけば、これはあなたを助けるでしょう..
向きの変更には Autosizing オプションを使用できます。コードを 1 行も書く必要はありません。
これを試して
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if(interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
{
// portrait Arrangement
}
else
{
// Landscape Arrangement
}
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight ||
interfaceOrientation == UIInterfaceOrientationPortrait ||
interfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
}