最近、一部のコードを新しいiOS 11ベータ5 SDKに移行しました。
UITableViewから非常に混乱する動作が発生します。テーブルビュー自体はそれほど豪華ではありません。私はカスタムセルを持っていますが、ほとんどの場合、それはそれらの高さのためです。
tableviewを使用してビューコントローラーを押すと、セルが「スクロールアップ」する(またはtableviewフレーム全体が変更される)プッシュ/ポップナビゲーションアニメーションに沿って下がる追加のアニメーションが表示されます。gifを参照してください:
私は手動で作成tableview
しますloadView
メソッド自動レイアウト制約をテーブルビューのスーパービューの先頭、末尾、上、下に等しくなるように設定します。スーパービューは、ビューコントローラーのルートビューです。
ビューコントローラーのプッシュコードは非常に標準的です。 self.navigationController?.pushViewController(notifVC, animated: true)
同じコードがiOS 10で通常の動作を提供します。
何が悪いのかを教えていただけませんか?
編集:私は非常にシンプルなテーブルビューコントローラーを作成しましたが、そこで同じ動作を再現できます。コード:
class VerySimpleTableViewController : UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 4
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = String(indexPath.row)
cell.accessoryType = .disclosureIndicator
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
let vc = VerySimpleTableViewController.init(style: .grouped)
self.navigationController?.pushViewController(vc, animated: true)
}
}
編集2:私はUINavigationBarのカスタマイズに問題を絞り込むことができました。私はこのようなカスタマイズをしています:
rootNavController.navigationBar.setBackgroundImage(createFilledImage(withColor: .white, size: 1), for: .default)
ここで、createFilledImage
所定の大きさと色の正方形画像を作成します。
この行をコメントアウトすると、通常の動作に戻ります。
この件についてのご意見をいただければ幸いです。
navigationBar.isTranslucent
した場合にのみ発生しfalse
ます。それ以外の場合は正常に動作します。