如何更改 UITabBarItem 的位置及其标题 (Storyboard)

How to change the position of an UITabBarItem and its title (Storyboard)

提问人:Feron2000 提问时间:4/13/2023 最后编辑:HangarRashFeron2000 更新时间:4/13/2023 访问量:147

问:

我目前正在尝试使用具有 UITabBarController 的 Swift 构建一个应用程序。我在下面添加了一个屏幕截图,以显示我现在拥有的结果。

运行应用程序时的屏幕截图

我的目标很简单。我想将绿色加号向下移动一点。为了保持标题的可读性,我还希望“添加产品”文本也向下移动。

所以我的问题是:如何向下移动加号图标和文本?

现在,我创建了两个函数来对 TabBarController 进行一些调整。这些函数存储在 Xcode 项目中,但存储在不同的文件中,因此我使用了扩展名。

extension UITabBarController {
    func setupTabBarAppearance() {
        // Set up appearance using UITabBarAppearance
        let appearance = UITabBarAppearance()
        appearance.configureWithOpaqueBackground()
        appearance.backgroundColor = .customLightGrey
        appearance.shadowImage = nil
        appearance.shadowColor = nil
        
        // Set the tab bar appearance
        self.tabBar.standardAppearance = appearance
        self.tabBar.scrollEdgeAppearance = appearance
        
    }
}

extension UITabBarController {
    func setupMiddleTabBarItem() {
        // Get the middle tab bar item
        guard let middleTabBarItem = self.tabBar.items?[2] else { return }

        // Create a custom image with double the size of the original image
        let imageSize = CGSize(width: middleTabBarItem.image?.size.width ?? 0, height: middleTabBarItem.image?.size.height ?? 0)
        let customImage = UIImage(systemName: "plus.circle.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: imageSize.width * 3.0))?.withTintColor(.customGreen, renderingMode: .alwaysOriginal)
        
        
        // Set the custom image and title for the middle tab bar item
        middleTabBarItem.title = "Add Product"
        middleTabBarItem.image = customImage
        
        // Move the title
        middleTabBarItem.titlePositionAdjustment = UIOffset(horizontal: 0, vertical: 10)
    }
}

我在 main.storyboard 中为 UITabBarController 指定了以下类名:“NavigationTabViewController”。我没有在main.storyboard中为UITabBar分配类名(实际上可能是问题的原因)。我按以下方式调用了上面的函数:

class NavigationTabViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // Call the setupMiddleTabBarItem function
        self.setupMiddleTabBarItem()
        
        // Set the background color and remove the translucent property
        self.setupTabBarAppearance()
    }
    
}

正如您在我添加到此线程的图片中看到的那样,背景是浅灰色的,按钮被放大了。但是,按钮完全相同,文本“添加产品”也是如此。我想移动这两个项目,但这些函数中的某些内容不起作用。

注意如果我只使用函数 setUpMiddleTabBarItem,那么文本会向下移动。此外,到目前为止,我用来向下移动符号的每种方法都失败了。

swift uitabbarcontroller uitabbarappearance

评论

0赞 HangarRash 4/13/2023
尝试在呼叫后呼叫。self.setupMiddleTabBarItem()self.setupTabBarAppearance()
0赞 Geoff Hackworth 4/13/2023
尝试在中间选项卡栏项上使用它:developer.apple.com/documentation/uikit/uitabbaritem/...

答: 暂无答案