Код: Выделить всё
let itemText = UIBarButtonItem(title: "Text")
itemText.tintColor = .systemGreen
< /code>
Текст будет выглядеть зеленым на панели инструментов или навигации. То же самое, что и ожидалось, если создано с изображением символа SF. Я экспериментировал с UIBUTTON

Я не хватает правильного способа, используемого в этом виде, или в этой проблеме. /> Вот какой -то пример кода, чтобы продемонстрировать проблему. Создайте новый проект для раскадровки приложения для iOS в XCode 26. Настройка раскадровки для отображения контроллера навигации с помощью контроллера просмотра в качестве корня. Замените код ViewController следующим образом: < /p>
Код: Выделить всё
import UIKit
class ViewController: UIViewController {
func createButton() -> UIButton {
var cfg = UIButton.Configuration.plain()
cfg.image = UIImage(systemName: "eye")
let button = UIButton(configuration: cfg)
return button
}
func createSegment() -> UISegmentedControl {
let i1 = UIImage(systemName: "eye")!
let i2 = UIImage(systemName: "eye")!
let seg = UISegmentedControl(items: [i1, i2])
seg.selectedSegmentIndex = 0
return seg
}
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .systemBackground
let b1 = createButton()
b1.tintColor = .systemRed
b1.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(b1)
let s1 = createSegment()
s1.selectedSegmentTintColor = .systemYellow
s1.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(s1)
let w1 = UISwitch()
w1.onTintColor = .systemCyan
w1.thumbTintColor = .systemPink
w1.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(w1)
NSLayoutConstraint.activate([
b1.centerXAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerXAnchor),
b1.centerYAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerYAnchor),
s1.centerXAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerXAnchor),
s1.topAnchor.constraint(equalTo: b1.bottomAnchor, constant: 20),
w1.centerXAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerXAnchor),
w1.topAnchor.constraint(equalTo: s1.bottomAnchor, constant: 20),
])
// Despite all these attempts to set a color, the views in the navbar remain black
let b2 = createButton()
b2.tintColor = .systemRed // Nope
let nb1 = UIBarButtonItem(customView: b2)
nb1.tintColor = .systemYellow // Nope
let s2 = createSegment()
s2.selectedSegmentTintColor = .systemRed // Nope
let nb2 = UIBarButtonItem(customView: s2)
nb2.tintColor = .systemMint // Nope
let w2 = UISwitch()
w2.onTintColor = .systemCyan // This actually works
w2.thumbTintColor = .systemPink // But this doesn't
let nb3 = UIBarButtonItem(customView: w2)
nb3.tintColor = .systemBrown // Neither does this
let nb4 = UIBarButtonItem(title: "Text")
nb4.tintColor = .systemGreen // This works on the text if not changed below with the titleTextAttributes
navigationItem.rightBarButtonItems = [nb1, nb3]
navigationItem.leftBarButtonItems = [nb2, nb4]
self.navigationController?.navigationBar.tintColor = .systemRed // Nothing
self.navigationController?.navigationBar.barTintColor = .systemYellow // Nothing
// This works on the text color but not the others
self.navigationController?.navigationBar.standardAppearance.buttonAppearance.normal.titleTextAttributes = [ .foregroundColor : UIColor.systemPurple ]
}
}
< /code>
Запустите это на симуляторе или устройстве iOS 26. В центре экрана будет отображаться правильно окрашенная кнопка, сегментированный элемент управления и Swift. Но это не включает в себя пользовательский представление. /> Настройка tintcolor
Подробнее здесь: https://stackoverflow.com/questions/796 ... -in-ios-26