3

iOS 7 のビュー コントローラーに問題があります。ナビゲーション バーの透明度/ぼかしを維持しながら、ナビゲーション バーとステータス バーの下のビューのレイアウトを調整する最善の方法を見つけようとしています。たとえば、View Controller に次のようなものがあるとします。

def viewDidLoad
  @scroll                      = UIScrollView.alloc.initWithFrame(new_frame)
  @scroll.bounces              = true
  @scroll.delegate             = self
  @scroll.alwaysBounceVertical = true
  @scroll.scrollsToTop         = true
  @scroll.contentSize          = CGSizeMake(UIScreen.mainScreen.bounds.size.width, scroll_frame.size.height)


  self.view.addSubview(@scroll)
end

私のコンテンツはナビゲーション バーの下に表示されます。このナビゲーション バーは、iOS 7 移行ガイドから入手できます。これを修正するには、viewDidLoad の内部に次を追加します。

self.edgesForExtendedLayout = UIRectEdgeNone

レイアウトは調整されていますが、ナビゲーション バーの背後にビューが拡張されていないため、ナビゲーション バーの透明度やぼかしがなくなりました。

レイアウトのエッジを設定する代わりに、scrollView インセットを調整しない場合:

self.automaticallyAdjustsScrollViewInsets = false

次に、スクロール フレームを次のように変更します。

def viewDidLoad
  nav_bar_height = self.navigationController.navigationBar.frame.size.height
  status_height  = UIApplication.sharedApplication.statusBarFrame.size.height

  height = nav_bar_height + status_height

  scroll_frame = self.view.bounds

  new_frame = CGRect.new([0, height], [scroll_frame.size.width, scroll_frame.size.height])

  @scroll                      = UIScrollView.alloc.initWithFrame(new_frame)
  @scroll.bounces              = true
  @scroll.delegate             = self
  @scroll.alwaysBounceVertical = true
  @scroll.scrollsToTop         = true
  @scroll.contentSize          = CGSizeMake(UIScreen.mainScreen.bounds.size.width, scroll_frame.size.height)


  self.view.addSubview(@scroll)

end

ナビゲーション バーの透明/ぼかしが表示されなくなりました。スクロールのフレーム (x 原点) を新しい高さで調整した場合にのみ、これが発生するようです。だから、それがなぜなのか、ぼかし/透明度を失うことなくスクロールを最適に調整するにはどうすればよいのか疑問に思っています。

4

1 に答える 1

5

多分あなたはインセットで試すことができます

[scroll setContentInset:UIEdgeInsetsMake(nav_bar_height + status_height, 0.0, 0.0, 0.0)];
[scroll setScrollIndicatorInsets:UIEdgeInsetsMake(nav_bar_height + status_height,0.0,0.0,0.0)];

その助けを願って

于 2013-09-19T07:38:20.273 に答える