Код: Выделить всё
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)
}
}
В iOS 18 размер корректно обновляется:

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

Кроме того, обратите внимание, что горизонтальный зазор между каждым элементом в iOS 26 больше, чем в iOS 18.
Как сохранить оба элемента моих размеров и зазоров на iOS 26, чтобы они выглядели так же, как iOS 18?
Подробнее здесь: https://stackoverflow.com/questions/798 ... -in-ios-26
Мобильная версия