Настройте размер и поле UINavigationBar UIBarButtonItem в iOS 26IOS

Программируем под IOS
Ответить
Anonymous
 Настройте размер и поле UINavigationBar UIBarButtonItem в iOS 26

Сообщение Anonymous »

Я хочу настроить размер кнопки панели навигации. Вот минимальный код воспроизведения:

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

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]

navigationItem.rightBarButtonItems = views.map { v in
v.anchor(to: CGSizeMake(12, 12))
let item = UIBarButtonItem(customView: v)
if #available(iOS 26.0, *) {
item.hidesSharedBackground = true
}
return item
}
}
}

extension UIView {
func anchor(to size: CGSize) {
translatesAutoresizingMaskIntoConstraints = false
let constraints = [
heightAnchor.constraint(equalToConstant: size.height),
widthAnchor.constraint(equalToConstant: size.width)
]
NSLayoutConstraint.activate(constraints)
}
}
В моем коде размер каждого представления инициализируется как 64x64, позже я использую ограничение, чтобы сделать размер равным 12x12.
В iOS 18 размер корректно обновляется:
Изображение

Однако в iOS 26 похоже, что учитывается только высота, но не ширина.
Изображение

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

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

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

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

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

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

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