3

scrollView を含むビューがあります。ビューが表示されると、画像が全画面 (320x480) で表示され、ステータスとナビゲーション バーが非表示になります。画面をタップすると、ステータスとナビゲーション バーが画面に表示されます。しかし、これにより UIScrollView がナビゲーション バーの下に移動します。スクロール ビューの上にステータス バーとナビゲーション バーを表示したい。

写真アプリで起こっているように。画像をタップすると、ステータスとナビゲーション バーが scrollView の上に表示されます。

以下は、ビューの配置方法です


//What I have done in viewDidLoad
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];
self.wantsFullScreenLayout = YES;
scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
self.view = scrollView;

以下は、シングルタップの検出で行っていることです


- (void)tapDetectingImageView:(TapDetectingImageView *)view             gotSingleTapAtPoint:(CGPoint)tapPoint {
    // single tap hide/unhide the status and nav bar
    NSLog(@"got a single tap");
    if (self.navigationController.navigationBarHidden == NO)
    {

        [self.navigationController setNavigationBarHidden:YES animated:NO];
        [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
    }
    else
    {
        [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
        [self.navigationController setNavigationBarHidden:NO animated:NO];
    }
}

皆さんへの単なるポインタ-私が使用する場合

[self.view addSubview:scrollView];
この問題はわかりません。しかし、これは私の横向きのコードを台無しにします。

私が間違っているかもしれないことに光を当てることができる人なら誰でも-大きな助けになるでしょう!

4

2 に答える 2

3

UIScrollViewナビゲーション ツールバーが切り替えられると、内部で特別な処理が行われるようです。質問の最後で指摘したように、スクロール ビューを含む内に配置するUIViewと、この再配置の問題は発生しません。

横向きの問題を修正するautoresizingMaskには、コンテナー ビューとスクロール ビューの両方で を設定していることを確認してください。プロジェクトでランドスケープ モードの処理を追加する必要はありませんでした。

于 2010-07-27T16:03:48.283 に答える
1

私は自分で解決策を見つけました。タップ検出コードの else fn で、最後に以下の行を追加します。

scrollView.contentOffset = CGPointMake(parentScrollView.contentOffset.x,0);

これが正しいアプローチかどうかはわかりません。しかし、誰かがより良いアプローチを提案できるなら、大歓迎です!

于 2009-07-28T06:56:41.587 に答える