In my app, I'm setting a right bar button item in a view controller's navigation bar with the following code:
Код: Выделить всё
func initView() {
self.view.backgroundColor = .systemGray6
self.title = "Title"
self.preferredContentSize = CGSize(width: 500, height: 600)
let cancelButton = UIBarButtonItem.init(title: "Close", style: .plain, target: self, action: #selector(cancelAndBack))
self.navigationItem.leftBarButtonItem = cancelButton
if #available(iOS 26.0, *) {
let doneButton = UIBarButtonItem.init(title: "Done", style: .prominent, target: self, action: #selector(cancelAndBack))
self.navigationItem.rightBarButtonItem = doneButton
} else {
let doneButton = UIBarButtonItem.init(title: "Done", style: .done, target: self, action: #selector(cancelAndBack))
self.navigationItem.rightBarButtonItem = doneButton
}
}
< /code>
для кнопки отмены: < /p>
Здесь нет явного стиля, поэтому он по умолчанию .plain < /strong>. < /li>
на ios 18 и ниже, это выглядит как простой текст без фона или граничащего
, который находится в образе Desired. Бета 4, это показывает с белым
фоном и закругленными углами, которые я не хочу. Мне нужен четкий фон без какого -либо округления или кадра. < /Li>
< /ul>
для сделанной кнопки: < /p>
Я заметил, что Uibarbuttonitem.style.done устарел в iOS 26 (как
per ocomed). Итак, я пытался использовать. Текст, без фона, без округления) на устройствах iOS 26?
Есть ли какие -либо новые API или параметры конфигурации в iOS 18, которые я должен использовать для переопределения этого стиля по умолчанию?
или это бета -проблема, которая может быть решена? < /p>
полностью код: < /p>
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Create the button
let button = UIButton(type: .system)
button.setTitle("Click me", for: .normal)
button.translatesAutoresizingMaskIntoConstraints = false
button.titleLabel?.font = UIFont.systemFont(ofSize: 18)
button.setTitleColor(.white, for: .normal)
button.backgroundColor = .systemBlue
button.layer.cornerRadius = 8
// Add target for button tap
button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
// Add button to view
view.addSubview(button)
// Set up constraints to center the button
NSLayoutConstraint.activate([
button.centerXAnchor.constraint(equalTo: view.centerXAnchor),
button.centerYAnchor.constraint(equalTo: view.centerYAnchor)
])
}
@objc func buttonTapped() {
let exportViewController = ExportViewController()
let navController = UINavigationController(rootViewController: exportViewController)
navController.modalPresentationStyle = .formSheet
self.present(navController, animated: true, completion: nil)
}
}
import UIKit
class ExportViewController: UIViewController {
func initView() {
self.view.backgroundColor = .systemGray6
self.title = "Title"
self.preferredContentSize = CGSize(width: 500, height: 600)
let cancelButton = UIBarButtonItem.init(title: "Close", style: .plain, target: self, action: #selector(cancelAndBack))
self.navigationItem.leftBarButtonItem = cancelButton
if #available(iOS 26.0, *) {
let doneButton = UIBarButtonItem.init(title: "Done", style: .prominent, target: self, action: #selector(cancelAndBack))
self.navigationItem.rightBarButtonItem = doneButton
} else {
let doneButton = UIBarButtonItem.init(title: "Done", style: .done, target: self, action: #selector(cancelAndBack))
self.navigationItem.rightBarButtonItem = doneButton
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Call initView first to set up the basic view
initView()
// Create and add the label
let helloLabel = UILabel()
if #available(iOS 26.0, *) {
helloLabel.text = "Hello iOS 26"
} else {
helloLabel.text = "Hello iOS 18"
}
helloLabel.font = UIFont.systemFont(ofSize: 48)
helloLabel.textAlignment = .center
helloLabel.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(helloLabel)
// Center the label in the view
NSLayoutConstraint.activate([
helloLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor),
helloLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor)
])
}
@objc func cancelAndBack(){
self.dismiss(animated: true, completion: nil)
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... 18-version