0

私は最近、Xcode 4.5 (iOS 6) で縦向きから横向きに回転するサブビューを使用して成功しました。回転が機能するようになり、縦向きと横向きの別々のビューを設計できるようになったので、別の問題に遭遇しました。

アプリが縦向きで開くと、すべて問題ありません。しかし、ボタンを押して新しい画面に移動すると。横向きビューが縦向きビューの上に表示されています。シミュレーターを横向きに回転してから縦向きに戻すと、縦向きビューが読み込まれます。

すべてがランドスケープビューで正常に機能します。これは縦表示でのみ発生します。

私の .h ファイルには次のものがあります。

@interface ViewController : UIViewController{


    IBOutlet UIView *portraitView;

    IBOutlet UIView *landscapeView;
}

//rotate views

@property (nonatomic, retain) IBOutlet UIView *portraitView;
@property (nonatomic, retain) IBOutlet UIView *landscapeView;

そして私の.mファイルにはこれがあります:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:UIDeviceOrientationDidChangeNotification object:nil];
    [self.view addSubview:portraitView];
    [self.view addSubview:landscapeView];


}


-(void)didRotate:(NSNotification *)notification
{
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

    if (orientation == UIDeviceOrientationPortrait)
    {
        portraitView.hidden = NO;
        landscapeView.hidden = YES;
    }
    else if (orientation == UIDeviceOrientationLandscapeLeft)
    {
        portraitView.hidden = YES;
        landscapeView.hidden = NO;
    }
    else if(orientation == UIDeviceOrientationLandscapeRight)
    {
        portraitView.hidden = YES;
        landscapeView.hidden = NO;
    }

}

また、すべてのコードを含むメイン/空白のビューと、適切なアウトレットに接続された縦向きと横向きのビューの 3 つのビューを持つ 1 つの xib ファイルもあります。

おそらく簡単なものです!

ありがとう。

4

1 に答える 1

0

不要なビューが非表示になっていることを確認してください。あなたのコードは私にとって完璧に機能しました。両方のビューを非表示にして開始し、方向を決定してそのビューを表示します。ローテーションのために、残りのコードを使用しました..

于 2013-05-10T02:02:16.943 に答える