Невозможно изменить высоту UINavigationBar в iOS 11

94
9

Я пытаюсь реализовать что-то похожее на новую строку состояния App Store на вкладке "Сегодня" на iPhone X. App Store - сегодня

Поэтому просто интересно, что такое реализация. Я попытался изменить высоту навигационной панели/наложение полупрозрачного UIView на строку состояния, но никто не кажется удовлетворительным, учитывая, что панель существует только на iPhone X. Спасибо.

спросил(а) 2017-12-05T06:54:00+03:00 2 года, 7 месяцев назад
1
Решение
110

Создать класс для панели навигации

class NavigationBar: UINavigationBar {

override func layoutSubviews() {
super.layoutSubviews()

for subview in self.subviews {
let stringFromClass = NSStringFromClass(subview.classForCoder)

if stringFromClass.contains("BarBackground") {
subview.frame.origin.y = -20
subview.frame.size.height = 64
}
}
}
}

и создать панель навигации с требуемым размером

let navigationBar = NavigationBar(frame: CGRect(origin: CGPoint(x: 0,
y: 20),
size: CGSize(width: view.frame.width,
height: 30)))
navigationBar.isTranslucent = false
self.view .addSubview(navigationBar)

ответил(а) 2017-12-05T07:48:00+03:00 2 года, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема