По умолчанию панель состояния на iPhone X выглядит так:
Но я хотел бы добиться этого:
Я попробовал установить preferredStatusBarStyle
для lightContent
но он работал только после установки фона позади строки состояния на черный.
Чтобы исправить закругленные углы, я закончил тем, что добавил еще одну подзубровку с закругленными углами.
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .black
let roundedView = UIView(
frame: CGRect(
x: 0,
y: UIApplication.shared.statusBarFrame.height,
width: view.frame.width,
height: view.frame.height
)
)
roundedView.layer.cornerRadius = 10
roundedView.layer.masksToBounds = true
roundedView.backgroundColor = .white
view.addSubview(roundedView)
let label = UILabel(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: 60))
label.text = "Black statusbar!"
label.textAlignment = .center
roundedView.addSubview(label)
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
Мне интересно, лучший ли это подход. Должен быть лучший способ добиться этого.
ОБНОВИТЬ
Это ужасная идея, потому что:
Не маскируйте и не обращайте особое внимание на функции отображения клавиш. Не пытайтесь скрыть устройство округлыми углами, корпусом датчика или индикатором для доступа к главному экрану, поместив черные полосы вверху и внизу экрана. Не используйте визуальные украшения, такие как скобки, рамки, фигуры или учебный текст, чтобы обратить особое внимание на эти области.
-
Округлые углы в верхней части представления могут выглядеть красиво, но вам придется добавлять исключения в код, чтобы убедиться, что закругленные углы не показаны на других iPhone. Вам нужно будет поместить это во все ваши ViewControllers/Storyboards.. Это не так здорово.
-
Округленные углы в нижней части изображения будут отображаться прямо на скриншотах, но углы наверху (заданные вручную) не будут. Это будет некрасиво, если пользователи делят ваше приложение.