1

私はオリエンテーションが初めてです。iOS でオリエンテーションを実装する方法を知りたいです。iOS5(以下)とiOS6で使用方法が異なります。

すべてのオブジェクトのフレームを 4 種類 (縦、上、下、縦、横、左、横、右) に設定する必要がありますか?

私は試した

-(BOOL)shouldAutoRotate
{
return YES;
}

しかし、それは機能していません。

4

2 に答える 2

2

これは私を助けたコードです。ご助力いただきありがとうございます。

- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
     //Only iOS5 and below
     return YES;
}


- (BOOL)shouldAutorotate {
     //Only iOS6
     return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
     //Only iOS6
     return UIInterfaceOrientationMaskAll;

}


-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {

     //iOS6 and below

     if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight ) {
          [self landscapeView];

     }
     else {
           [self portraitView];
    }   
}


-(void) portraitView {
//Set the portrait frames here.
}


-(void) landscapeView {
//Set the landscape frames here.
}
于 2012-10-17T12:21:56.473 に答える
0

もっと明確にできますか?一部のビューでは方向の変更を許可し、他のビューでは許可しないようにしたいですか? iOS6 ですべての回転を許可する場合は、各 viewController で以下の関数に対して yes を返すだけです。

-(BOOL)shouldAutoRotate
{
return YES;
}

shouldAutoRotateToInterfaceOrientation メソッドは iOS6 で非推奨になりました。

また、ある向きで特定の viewController をロックしたい場合は、以下のメソッドをオーバーライドします。

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationPortrait;//whichever
}

一部のviewControllerで方向の変更を許可し、他のビューコントローラーでは許可しない場合は、すべての基本クラスと継承されたクラスでこれらのメソッドをオーバーライドする必要があります。向きの変更の通知を受け取り、ビューの変更を手動でトリガーする場合は、NSNotificationCenter を使用するオプションもあります。それを行う方法の詳細が必要な場合はお知らせください。

それが役に立てば幸い!

于 2012-10-17T07:39:06.650 に答える