UITabBar项目在iOS 12.1上跳回导航

Igo*_*man 59 uitabbar ios swift

UITabBarController在主屏幕上有一个iOS应用程序,导航到隐藏UITabBarControllerwith设置的详细信息屏幕hidesBottomBarWhenPushed = true.

当回到主屏幕时,UITabBarController会发出奇怪的"跳跃",如此GIF所示:

在此输入图像描述

仅在iOS 12.1上发生,而不是在12.0或11.x上发生.

看起来像iOS 12.1的错误,因为我注意到其他应用程序如FB Messenger有这种行为,但我想知道,是否有某种解决方法呢?

小智 60

在您的UITabBarController中,设置isTranslucent = false

  • 在UITabBarController中,[self.tabBar setTranslucent:NO];工作正常!谢谢。 (2认同)

小智 10

Apple已经在iOS 12.1.1中修复了这个问题


小智 5

我想这是Apple的错误但是你可以尝试这个作为一个热门修复:只需为你的tabBar创建一个类,其代码如下:

import UIKit

class FixedTabBar: UITabBar {

    var itemFrames = [CGRect]()
    var tabBarItems = [UIView]()


    override func layoutSubviews() {
        super.layoutSubviews()

        if itemFrames.isEmpty, let UITabBarButtonClass = NSClassFromString("UITabBarButton") as? NSObject.Type {
            tabBarItems = subviews.filter({$0.isKind(of: UITabBarButtonClass)})
            tabBarItems.forEach({itemFrames.append($0.frame)})
        }

        if !itemFrames.isEmpty, !tabBarItems.isEmpty, itemFrames.count == items?.count {
            tabBarItems.enumerated().forEach({$0.element.frame = itemFrames[$0.offset]})
        }
    }
}
Run Code Online (Sandbox Code Playgroud)