contentInsetAdjustmentBehavior никогда не устанавливается

Я пытаюсь установить contentInsetAdjustmentBehavior == .never для UITableView в viewDidLoad() из ViewController Однако это игнорируется, независимо от того, делаю ли я это программно или через InterfaceBuilder.

Вот что я получаю. Изображение является заголовком TableView.

Вот что я получаю. Изображение является заголовком TableView

У меня есть панель навигации поверх того, что, кстати, прозрачно.

Я ожидаю, что Заголовок с изображением будет таким

ожидаемое поведение

Любая помощь приветствуется. Спасибо

1 ответ

Решение

введите описание изображения здесь Установите константу topConstraint для imageView в -64

  • создать Outlet для topConstraint из imageView
  • объявить переменную topPadding (для iPhone X)

    @IBOutlet weak var topConstraint: NSLayoutConstraint!
    var topPadding:CGFloat = 0.0
    

И используйте приведенный ниже код в viewDidload

override func viewDidLoad() {
    super.viewDidLoad()

    self.navigationController!.navigationBar.setBackgroundImage(UIImage(), for: .default)
    self.navigationController!.navigationBar.shadowImage = UIImage()
    self.navigationController!.navigationBar.isTranslucent = true
    topConstraint.constant = -64
    if #available(iOS 11.0, *) {
        let window = UIApplication.shared.keyWindow
        topPadding = (window?.safeAreaInsets.top)!
        topConstraint.constant = -(64+topPadding)
    }
}

Ссылайтесь на этот пример проекта

Другие вопросы по тегам