Xcode 导航栏按钮对齐

Posted

技术标签:

【中文标题】Xcode 导航栏按钮对齐【英文标题】:Xcode Nav Bar Button Alignment 【发布时间】:2020-11-01 20:15:48 【问题描述】:

我有一个带有 3 个左栏按钮(图标)和 1 个右栏按钮(BACK)的导航栏。

如我所愿,右栏(BACK)按钮始终保持在最右侧。

3 个左栏按钮按图像不均匀对齐:

我希望它们要么:全部留在左边,要么在剩余空间中等距。

我已将每个图标的宽度设置为 50 像素,两侧插入 10 像素。然而,第二个和第三个按钮(文档和星形图标)似乎遵循这些规则,但第一个(链接图标)则只占用了所有剩余空间。

环顾四周,但看不到设置对齐/间距的方法。非常感谢您的帮助

【问题讨论】:

【参考方案1】:

从现在开始,请务必在提出问题时发布您的代码,因为如果不看到问题就很难理解问题。

顺便说一下,这里是 TabBarController 类的代码,它也有 contentInsets 它在我的每个应用程序中都能完美运行

class TabBarController: UITabBarController 
    
         override func viewDidLoad() 
                super.viewDidLoad()
               
                let firstVeiwController = createNavController(vc: ExercisesLobby(), selected: UIImage(named: "Note")!, unselected: UIImage(named: "NoteUnselected")!)
                let secondViewController = createNavController(vc: TrainingPlansViewController(), selected: UIImage(named: "Exercises")!, unselected: UIImage(named: "ExercisesUnselected")!)
                let thirdViewController = createNavController(vc: MapViewController(), selected: UIImage(named: "Map")!, unselected: UIImage(named: "MapUnselected")!)
            
                viewControllers = [firstVeiwController, secondViewController, thirdViewController]
                tabBar.barStyle = .black
                tabBar.barTintColor = UIColor.white
                tabBar.tintColor = UIColor.black
                tabBar.unselectedItemTintColor = UIColor.lightGray.withAlphaComponent(0.9)
                additionalSafeAreaInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
            
                guard let items = tabBar.items else  return 
                
                for item in items 
                    item.imageInsets = UIEdgeInsets(top: 2, left: 0, bottom: -22, right: 0)
                
            
            selectedViewController = secondViewController
                
            
            
            //MARK: - Functions
            
    
           
        

    extension UITabBarController 
        func createNavController(vc: UIViewController, selected: UIImage, unselected: UIImage) -> UINavigationController 
            
            let viewController = vc
            let navController = UINavigationController(rootViewController: viewController)
            navController.tabBarItem.image = unselected
            navController.tabBarItem.selectedImage = selected
            
            return navController
        
    

【讨论】:

嗨,Aisultan,感谢您的回复。请注意,我没有包含所有通过情节提要完成的代码,因此没有代码。我通过情节提要添加了宽度和插入,但没有任何效果。不知道通过代码执行此操作会有什么不同,但我会试一试。

以上是关于Xcode 导航栏按钮对齐的主要内容,如果未能解决你的问题,请参考以下文章

IOS - 垂直对齐导航栏中的后退按钮

将导航栏切换按钮向右对齐

Bootstrap 4将两个导航栏菜单按钮对齐到右侧[重复]

Xcode 11.4 导航栏按钮问题

iOS 13 中第二个视图控制器的导航栏按钮对齐错误

Bootstrap 4导航栏右对齐在移动设备上不折叠的按钮