Passen Sie die UIBarButtonItem-Größe und den Rand von UINavigationBar in iOS 26 anIOS

Programmierung für iOS
Anonymous
 Passen Sie die UIBarButtonItem-Größe und den Rand von UINavigationBar in iOS 26 an

Post by Anonymous »

Ich möchte die Größe meines Navigationsleistenschaltflächenelements anpassen. Hier ist ein minimaler Reproduktionscode:

Code: Select all

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)
}
}
In meinem Code wird die Größe jeder Ansicht mit 64 x 64 initialisiert. Später verwende ich eine Einschränkung, um die Größe auf 12 x 12 zu erzwingen.
Unter iOS 18 wird die Größe korrekt aktualisiert:
Image

Unter iOS 26 scheint jedoch nur die Höhe berücksichtigt zu werden, nicht aber die Breite.
Image

Beachten Sie außerdem, dass der horizontale Abstand zwischen den einzelnen Elementen unter iOS 26 größer ist als unter iOS 18.
Wie kann ich beides beibehalten? Meine Größen und Lücken unter iOS 26, damit es genauso aussieht wie iOS 18?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post