Вставки TabBarItem вызывают странное поведение значка при нажатии - PullRequest
0 голосов
/ 08 января 2019

У меня есть UITabBarController, к которому я применил несколько вставок, чтобы я мог расположить иконку и заголовок рядом

    navController.tabBarItem.title = title.rawValue
    navController.tabBarItem.image = image.resize(width: 30, height: 30).withRenderingMode(.alwaysTemplate)

Однако при нажатии на вкладку мой значок перемещается вправо или случайным образом смещается.

enter image description here

После нажатия на документы значок заметно смещается вправо и за пределы видимости.

enter image description here

Если я удаляю вставки, значок будет работать, как и ожидалось, однако, конечно, я не смогу использовать макет как требуется.

import UIKit

enum TabBarItem: String {
    case questions = "Questions"
    case documents = "Documents"
    case profile = "Profile"
}

class MainTabBarController: UITabBarController {
    override func viewDidLoad() {
        super.viewDidLoad()

        view.hasBackgroundGradient()
        setupTabBar()

        viewControllers = [
            generateNavigationController(for: ChatController(), title: .questions, image: #imageLiteral(resourceName: "bot_icon"), hideNavbar: true),
            generateNavigationController(for: DocumentsController(), title: .documents, image: #imageLiteral(resourceName: "document_icon"), hideNavbar: true),
            generateNavigationController(for: ProfileController(), title: .profile, image: #imageLiteral(resourceName: "profile_icon"))
        ]
    }
}

extension MainTabBarController {
    fileprivate func setupTabBar() {
        tabBar.barTintColor = .white
        tabBar.isTranslucent = false
        tabBar.unselectedItemTintColor = .black
        tabBar.tintColor = UIColor.usingHex("1fb3b7")
    }

    fileprivate func generateNavigationController(for rootViewController: UIViewController, title: TabBarItem, image: UIImage, hideNavbar: Bool = false) -> UIViewController {
        let navController = UINavigationController(rootViewController: rootViewController)
        navController.isNavigationBarHidden = hideNavbar

        if !hideNavbar {
            navController.navigationBar.barTintColor = .white
            navController.navigationBar.isTranslucent = false
        }

        navController.tabBarItem.titlePositionAdjustment = UIOffset(horizontal: -20, vertical: -20)
        navController.tabBarItem.imageInsets = UIEdgeInsets(top: 3, left: 40, bottom: -3, right: -60)

        navController.tabBarItem.title = title.rawValue
        navController.tabBarItem.image = image.resize(width: 30, height: 30).withRenderingMode(.alwaysTemplate)

        navController.tabBarItem.badgeValue = ""

        return navController
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...