Прежде всего, я новичок в Swift, поэтому извиняюсь, если я упускаю что-то очевидное или использую неправильную терминологию.
Цель: установить выбранное изображение элемента панели вкладок на собственное изображение.
Работает следующая настройка (выбранный элемент - собственное изображение):
| UITabBarController | => | UIViewController | (настройка с раскадровкой)
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let customSelectedImage = UIImage (named: "selected-image")?.withRenderingMode(.alwaysOriginal)
self.tabBarItem.selectedImage = customSelectedImage
}
}
Но эта настройка не работает (выбранный элемент по умолчанию имеет синий оттенок):
| UITabBarController | => | UINavigationController | => | UIViewController | (настройка с раскадровкой - см. здесь)
Код аналогичен приведенному выше, но добавлен (программно) подвид UICollectionView в UIViewController.
class MyViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
override func viewDidLoad() {
super.viewDidLoad()
let customSelectedImage = UIImage (named: "selected-image")?.withRenderingMode(.alwaysOriginal)
self.tabBarItem.selectedImage = customSelectedImage
...
//Some UICollectionView related code
...
}
}
Некоторые вещи, которые могут быть полезны:
- В сеансе отладки (см. Экран печати) => Просмотр иерархии пользовательского интерфейса: выбранный элемент ( помечен как класс UITabBarSwappableImageView) имеет правильное настраиваемое изображение, но по умолчанию используется синий оттенок. Я пробовал использовать разные пользовательские изображения, и похоже, что они скрыты другим (по умолчанию?) Представлением ...
- Если я изменю функцию UITabBar.appearance (). TintColor = UIColor.red в приложении AppDelegate.swift (... didFinishLaunchingWithOptions ...), тогда выбранный элемент будет иметь красный (против синего) оттенок.
Что творится?