[xcode] TableView上部にボタンを置きたいのに変なマージンが挿入されてしまう件

ボタンを常に画面の上に表示させるために

ボタンの直下にTableViewを配置、AutoLayoutでボタンとの距離を0にしたが、何故か変なマージンが入り込んで、スクロールするとTableViewのセルが上まではみ出る現象が、、

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-17-8-15-21

↑の画像で青丸がボタン(横幅いっぱい)、そのすぐ下に「iPhone」セクションが入りされてほしいのに謎のマージンが、、、それもスクロールするとセクションのセルが入り込む。

 

解決方法:

原因としてはiOS7から実装されたすりガラス機能(上のナビゲーションバーの下にすりガラスみたいに下のコンテンツが映り込む機能)が邪魔している様子

ViewControllerの「Adjust Scroll View Insets」をOFFにする

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-17-8-15-57

これだけではTableViewがボタンを無視して、ナビゲーションバー直下から始まってしまうので、AutoLayoutでボタンの縦幅のマージンを設定した

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-17-8-16-40

↑とりあえず、想定通り

 

 

追記、Adjust Scroll View InsetsをOFFしなくても下記コードでもOKの様子

tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です