0

ユーザーがアプリを起動したときに画像を表示したい。この画像は20秒間表示されています。

ユーザーが横向きでアプリを起動したときに、アプリが横向きのままになる機能が欲しいのですが。また、ユーザーがPortraitでアプリを起動すると、アプリはPortraitのままになります。

Appdelegateでこれを構成するのに本当に苦労したので、この画像を表示するために別のビューコントローラーを作成しました。タイマーが終了したら、回転を有効にする次のビューに移動します。

では、どうすればiPadのUIを一時的にロックできますか?

編集:

Appdelegateの後の最初のViewcontrollerのviewDidLoad内に方向チェックを実装することで、これを修正しました。すべての向きについて、値を保存しました。shouldAutorotateを実行する場合:最初に、方向の変更を無効にする保存された値を確認します。

コードの解決策:

- (void)viewDidLoad {
    [super viewDidLoad];
    NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
    if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)) {
        [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"PortraitLandscapeIndicator"];
    }
    else {
        [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"PortraitLandscapeIndicator"];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    //the latest saved orientation is our orientation
    if([[NSUserDefaults standardUserDefaults] integerForKey:@"PortraitLandscapeIndicator"] == 1){
         return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (interfaceOrientation == UIInterfaceOrientationLandscapeRight));
    }
    else{
        return ((interfaceOrientation == UIInterfaceOrientationPortrait) || (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown));

    }

}
4

2 に答える 2

0

最初に画像を表示するときにイニシャルinterfaceOrientation(View Controllerのプロパティ)を保存する必要があります。次に、shouldAutorotateToInterfaceOrientation:メソッドで、方向が最初に保存された値と同じである場合にのみYESを返します。

タイマーが終了すると、サポートされている任意の方向への回転を許可できます

于 2012-07-04T16:47:19.743 に答える
0

開始時に特別なviewControllerが表示され、loadViewまたはinitがデバイスの向きを取得し、ビューフレームを適切に設定し、ポートレートまたはランドスケープのモードに基づいて、許可された向きのみを返すような操作を行う必要があるようです。 [shouldAutorotateToInterfaceOrientation:]。

タイマーが切れたら、他のviewControllerに制御を渡して、そこからタイマーを取得したり、他の方向を許可したりできます。

しかし、最終的には、これは、自分に最適なスキームを介してプログラムで実行する必要があると思います。

于 2012-07-04T16:56:08.013 に答える