10

ストーリーボードで TableViewController を使用して、アプリで TableView の構築を開始しました。これを行うと、リストを下にスクロールすると非常にクールな効果が得られます。ナビゲーション バーの後ろを移動するセルがぼやけます。

しばらくして、この TableViewController から、TableView を内部に持つ ViewController に移動する必要がありました (テーブルの下部に他のビューを追加する必要がありました)。

最初のセルがナビゲーション バーによって隠される (その上にある) ことを避けるために、上部と下部のレイアウト ガイド、およびビューの左端と右端に制約を追加しました。

これは正常に機能しますが、クールなぼやけたスクロール効果が失われました。ナビゲーションバーの後ろに移動する前にセルが消えているようです。

制約を使用せず、インターフェイス ビルダーにマジック ナンバーを配置するという回避策を見てきました。私はこれを行うことができません.1つ目は嫌いなので、2つ目はiOS 6と互換性がなければならないからです.

ぼやけたナビゲーション バーの効果から再び恩恵を受けることができなかったのは何ですか?

4

5 に答える 5

11

テーブル ビューの を手動で調整しcontentInset、テーブル ビュー フレームの原点が 0, 0 であることを確認する必要があります。この方法では、テーブル ビューはナビゲーション バーの下になりますが、コンテンツとスクロール ビューの端の間にはいくらかの余白があります。 (コンテンツは下にシフトされます)。

64 (ステータスバー + ナビゲーションバー) をハードコーディングする代わりにtopLayoutGuide、View Controller のプロパティを使用して right を設定することをお勧めします。s の場合に使用する必要があるcontentInsetsもあります。bottomLayoutGuideUITapBar

ここにいくつかのサンプルコードがあります(viewDidLoad問題ないはずです):

// Set edge insets
CGFloat topLayoutGuide = self.topLayoutGuide.length;
tableView.contentInset = UIEdgeInsetsMake(topLayoutGuide, 0, 0, 0);

ところで、このプロパティUIViewControllerが役立つかもしれません (デフォルト値を変更する必要はありませんが、ビュー階層が何であるかはわかりません):

  • automaticallyAdjustsScrollViewInsets
  • edgesForExtendedLayout
  • extendedLayoutIncludesOpaqueBars
于 2013-10-15T19:50:46.627 に答える
1

またはの座標にマップするために、 にtableView設定されていない の座標を持っている可能性があります。それができたら、設定してみてください(0, 0)viewController.view.frameviewController.view.bounds

self.navigationController.navigationBar.translucent = YES;

于 2013-10-10T15:13:32.397 に答える