2

アプリを iOS 7 の新しい GUI に更新してから、解決できない問題があります。

私のアプリは、スクロール可能な TableView で構成されています。問題は、TableView が下にあるトップ バーをスクロールすることです。これは、テーブルがトップ バーを考慮せず、上部まで伸びて見にくいことを意味します。

ここに画像の説明を入力

「トップバーの下のエッジを拡張」のチェックを外してみましたが同じです。

どうすればこれを解決できますか?

4

2 に答える 2

1

解決策の 1 つは、テーブル ビューのcontentInsetscrollIndicatorInsetsを 20 の上部インセットを持つように設定することです。テーブル ビューはステータス バーの下に重なって表示されますが、完全にスクロールすると完全に表示されます。

その解決策が気に入らず、ステータス バーの後ろに永続的な空白領域が必要な場合は、テーブル ビューの上部を固定/配置する方法を変更して、ステータス バーを許可する必要があります。これを行う方法は、自動レイアウトを使用しているかどうかによって異なります。その場合は、一番上のレイアウト ガイドに固定してください。そうでない場合は、nib エディターで提供される「デルタ」フィールドを使用する必要があります。

ただし、UITableViewController を使用している場合、テーブル ビューの上部は担当しません。これは全画面表示であり、View Controller のメイン ビューです。これは実際にはかなり厄介な状況です。私は2つの解決策に頼りました:

  • ナビゲーションバーに「干渉を実行」させるために、すべてを UINavigationController に入れます。

  • または、テーブル ビューの上部を配置できるように、テーブル ビュー コントローラーをカスタムの親ビュー コントローラーに埋め込みます。

于 2015-10-17T15:01:41.537 に答える
0

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
    }
}
于 2015-10-17T20:30:40.800 に答える