5

UIScrollViewメインビューが画面のフルサイズを占める写真アプリのようなアプリケーションがあります。また、写真アプリと同様に、ユーザーが画面をタップすると、半透明のナビゲーション、ステータス、およびツールバーが再表示/非表示になります。

UIViewControllersメイン ビューを として設定し、UIScrollViewそれを画面全体に表示するのに問題があります。問題は、ナビゲーション バーとステータス バーが表示されているときに、ナビゲーション バーとステータス バーUIScrollViewの高さによって が押し下げられることです (本来のようにそれらの下に移動しません)。ユーザーが画面をタップしてナビゲーション/ステータスバーが消えると、想定どおりに画面全体を占めるようにリセットされます。

メイン ビューを として設定し、その上にUIViewを取り付けるという簡単な回避策が機能します。ただし、理論的には機能するはずなので、回避策(つまり、を調整するなど)UIScrollViewなしでこれを機能させたいと思います。UIScrollViews contentInset

以下は私が実装しているコードです:

- (void)loadView
{

    self.wantsFullScreenLayout = YES;

    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame: CGRectMake(0,0,320,480)];
    scrollView.contentSize = CGSizeMake(320, 480);
    scrollView.scrollEnabled = NO;
    scrollView.contentOffset = CGPointZero;
    scrollView.bounces = NO;
    self.view = scrollView;
    [scrollView release];

}

- (void) viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    self.navigationController.navigationBar.translucent = YES;
    [[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackTranslucent animated: NO];
    self.navigationController.toolbarHidden = NO;
    self.navigationController.toolbar.barStyle = UIBarStyleBlack;
    self.navigationController.toolbar.translucent = YES;

    [self startTimer];
}

- (void) viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];

    self.navigationController.navigationBar.translucent = NO;
    [[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleDefault animated: NO];

    [self cancelTimer];
}

更新:フレームではなく、contentOffsetcontentInsetが変更されていることに気付きました。scrollViewsバーが消えて、UIScrollViewが画面のフル サイズ (本来あるべき状態) になると、contentOffsetcontentInsetは次のようになります。

Content Offset: {0, -20}
Content Inset: {20, 0, 44, 0}

バーが表示されているときにUIScrollViewを押し下げると、contentOffsetcontentInsetは次のようになります。

Content Offset: {0, -64}
Content Inset: {64, 0, 44, 0}
4

3 に答える 3

5

Apple の UI 移行ガイドを読んだ後、iOS7 で同様の問題を解決しました: https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/AppearanceCustomization.html

ブール値のプロパティUIViewControllerがあることがわかりました。automaticallyAdjustsScrollViewInsetsデフォルトはtrueです。これを無効にするUIScrollViewと、押し下げられるのではなく、ウィンドウ全体がいっぱいになりました。

于 2013-10-30T11:34:29.447 に答える
3

これについて DTS と話をしたところ、これは設計された動作であり、UIScrollViewを親にアタッチすることをお勧めしUIViewます。

于 2012-06-06T22:07:19.160 に答える
-1

設定してみてください:

self.view.frame = CGRectMake(0.f, -44.f, 320.f 480.f);

希望どおりのサイズにならない場合がありますが、調整できます...

于 2012-06-05T19:57:36.540 に答える