アプリを iOS 7 の新しい GUI に更新してから、解決できない問題があります。
私のアプリは、スクロール可能な TableView で構成されています。問題は、TableView が下にあるトップ バーをスクロールすることです。これは、テーブルがトップ バーを考慮せず、上部まで伸びて見にくいことを意味します。
「トップバーの下のエッジを拡張」のチェックを外してみましたが同じです。
どうすればこれを解決できますか?
アプリを iOS 7 の新しい GUI に更新してから、解決できない問題があります。
私のアプリは、スクロール可能な TableView で構成されています。問題は、TableView が下にあるトップ バーをスクロールすることです。これは、テーブルがトップ バーを考慮せず、上部まで伸びて見にくいことを意味します。
「トップバーの下のエッジを拡張」のチェックを外してみましたが同じです。
どうすればこれを解決できますか?
解決策の 1 つは、テーブル ビューのcontentInset
とscrollIndicatorInsets
を 20 の上部インセットを持つように設定することです。テーブル ビューはステータス バーの下に重なって表示されますが、完全にスクロールすると完全に表示されます。
その解決策が気に入らず、ステータス バーの後ろに永続的な空白領域が必要な場合は、テーブル ビューの上部を固定/配置する方法を変更して、ステータス バーを許可する必要があります。これを行う方法は、自動レイアウトを使用しているかどうかによって異なります。その場合は、一番上のレイアウト ガイドに固定してください。そうでない場合は、nib エディターで提供される「デルタ」フィールドを使用する必要があります。
ただし、UITableViewController を使用している場合、テーブル ビューの上部は担当しません。これは全画面表示であり、View Controller のメイン ビューです。これは実際にはかなり厄介な状況です。私は2つの解決策に頼りました:
ナビゲーションバーに「干渉を実行」させるために、すべてを UINavigationController に入れます。
または、テーブル ビューの上部を配置できるように、テーブル ビュー コントローラーをカスタムの親ビュー コントローラーに埋め込みます。
UINavigationController で、ステータスバーの下にあるが埋め込みコントローラー (テーブル) の前にある UIView を作成したため、テーブルはこのビューの後ろに消え、ステータスバーは常に上に表示されます。
var patch: UIView!
override func viewDidLoad() {
super.viewDidLoad()
patch = UIView(frame: CGRectMake(0, 0, view.bounds.width, 20))
patch.backgroundColor = UIColor.redColor()
self.view.addSubview(patch)
}
次に、画面が横向きになると非表示になり(iOS9ではステータスバーが横向きになると自動的に消えます)、画面が縦向きになると再び表示されるようにします。
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
if UIDevice.currentDevice().orientation.isLandscape.boolValue {
patch.hidden = true
} else {
patch.hidden = false
}
}