Положение панели навигации iOS 26 ниже, чем в iOS 18 в ландшафтном режиме.IOS

Программируем под IOS
Ответить
Anonymous
 Положение панели навигации iOS 26 ниже, чем в iOS 18 в ландшафтном режиме.

Сообщение Anonymous »

Мое приложение просто содержит панель навигации, и обратите внимание, что в iOS 26 она отображается ниже, чем ожидалось. Как вы можете видеть на скриншоте, он расположен на 24 пт вниз. Однако в iOS 18 панель навигации расположена вверху.
Версия для iOS 26 занимает слишком много места на экране и выглядит не очень хорошо. Как я могу изменить его, чтобы оно соответствовало поведению iOS 18?
Вот минимальный код воспроизведения:

Код: Выделить всё

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.

let w: CGFloat = 64
let h: CGFloat = 64

let v1 = UIView(frame: CGRectMake(0, 0, w, h))
let v2 = UIView(frame: CGRectMake(0, 0, w, h))
let v3 = UIView(frame: CGRectMake(0, 0, w, h))
let v4 = UIView(frame: CGRectMake(0, 0, w, h))
let v5 = UIView(frame: CGRectMake(0, 0, w, h))
let v6 = UIView(frame: CGRectMake(0, 0, w, h))

v1.backgroundColor = .red
v2.backgroundColor = .green
v3.backgroundColor = .yellow
v4.backgroundColor = .gray
v5.backgroundColor = .cyan
v6.backgroundColor = .purple

let views: [UIView] = [v1, v2, v3, v4, v5, v6]

let gap: CGFloat = 16
let width: CGFloat = 32
let height: CGFloat = 32
let totalWidth: CGFloat = width * CGFloat(views.count) + gap * CGFloat(views.count-1)
let container = UIView(frame: CGRectMake(0, 0, totalWidth, height))

container.widthAnchor.constraint(equalToConstant: totalWidth).isActive = true

for (i, view) in views.enumerated() {
view.translatesAutoresizingMaskIntoConstraints = false
container.addSubview(view)

NSLayoutConstraint.activate([
view.widthAnchor.constraint(equalToConstant: width),
view.heightAnchor.constraint(equalToConstant: height), // match container
view.centerYAnchor.constraint(equalTo: container.centerYAnchor),
view.leadingAnchor.constraint(equalTo: container.leadingAnchor, constant: CGFloat(i) * (width + gap))
])
}

let containerItem = UIBarButtonItem(customView: container)
if #available(iOS 26.0, *) {
containerItem.hidesSharedBackground = true
}

navigationItem.rightBarButtonItem = containerItem
}
}

extension UIView {
func anchor(to size: CGSize) {
translatesAutoresizingMaskIntoConstraints = false
let constraints = [
heightAnchor.constraint(equalToConstant: size.height),
widthAnchor.constraint(equalToConstant: size.width)
]
for constraint in constraints {
constraint.priority = UILayoutPriority(rawValue: 1000)
}
NSLayoutConstraint.activate(constraints)
}
}

В iOS 26 (см. пробел):
Изображение

В iOS 18 (без пробела):
Изображение

Обратите внимание, что в приложении Safari для iOS 26 этого пробела нет:
Изображение


Подробнее здесь: https://stackoverflow.com/questions/798 ... ndscape-mo
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»