横向きモードと縦向きモードでフィールドの異なる位置に Interface Builder を使用できますか? (全然違うので、レイアウトプロパティだけでは使えません)?
または、コードが唯一の方法ですか?
ありがとう
横向きモードと縦向きモードでフィールドの異なる位置に Interface Builder を使用できますか? (全然違うので、レイアウトプロパティだけでは使えません)?
または、コードが唯一の方法ですか?
ありがとう
インターフェイス ビルダーで 2 つの UIView を保持できます。ユーザーがデバイスを回転させると、向きに基づいて一方を非表示にし、もう一方を表示できます。次のコード行を試していただけますか?
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
if(([self.navigationController.visibleViewController interfaceOrientation] == UIDeviceOrientationLandscapeLeft) || ([self.navigationController.visibleViewController interfaceOrientation] == UIDeviceOrientationLandscapeRight)){
self.viewLandscape.hidden = NO;
self.viewPortrait.hidden = YES;
}
else {
self.viewLandscape.hidden = YES;
self.viewPortrait.hidden = NO;
}
}
ポートレートモードとランドスケープモードで共有されるフィールドが同じ場合、コードを使用すると思います。各モードで異なるオブジェクトを使用する場合は、良い考えではありません。
メソッドを使用できますwillRotateToInterfaceOrientation
。デバイスの向きを変更すると、..
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
-(void)willRotateToInterfaceOrientation: (UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
{
if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation))
{
[label setFrame:CGRectMake(20, 52, 728, 617)];
}
else
{
[label setFrame:CGRectMake(20, 52, 728, 617)];
}
}
使用できるアプローチを次に示します。最善のアプローチは上にあり
ます 1.ビューを調整するには、自動レイアウトを使用することをお勧めします。
2.自動レイアウト + コード
3.コードのみ。
4. xib に対して 2 つのビューを作成できます。1 つは横向き、もう 1 つは縦向きです。向きに応じて表示と非表示を切り替えます。ただし、これでは、すべての縦向きビューを横向きビュー (テキストなどのプロパティ) と同期する必要があり、その逆も同様です。これは維持するのは簡単ですが、各ビューのプロパティを同期するために頭を悩ませる必要があります。