使用PPBadgeView的自定义徽章未在Navigationitem中显示-Swift

时间:2018-09-19 08:11:07

标签: ios objective-c swift uinavigationcontroller badge

我正在创建一个应用,我想在出现提醒用户的通知时显示徽章图标。

我发现了名为PPBadgeView的库,并且遵循了以下说明,我正在使用pod 'PPBadgeViewSwift'然后是pod install

在编程中,我想用badgeview实现rightNavigationBar,但它没有显示给我。

我做了什么:

let rightBarButton = UIBarButtonItem(image: UIImage(named: "notification")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal), style: .plain, target: self, action: #selector(notificationHandle))

rightBarButton.pp.addBadge(text: "99+")
rightBarButton.pp.moveBadge(x: -5, y: 0)
rightBarButton.pp.setBadge(height: 12)
rightBarButton.pp.setBadge(flexMode: PPBadgeViewFlexMode.tail)

self.navigationItem.rightBarButtonItem = rightBarButton

当我运行该应用程序时,我只会看到仅设置的图标。我不知道我的badgeView在哪里。

1 个答案:

答案 0 :(得分:1)

如果您使用的是iOS 11+,则必须异步执行任务

let rightBarButton = UIBarButtonItem(image: UIImage(named: "notification")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal), style: .plain, target: self, action: #selector(notificationHandle))
self.navigationItem.rightBarButtonItem = rightBarButton

if (UIDevice.current.systemVersion as NSString).doubleValue >= 11.0 {
    DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.01, execute: {
        rightBarButton.pp.addBadge(text: "99+")
        rightBarButton.pp.moveBadge(x: -5, y: 0)
        rightBarButton.pp.setBadge(height: 12)
        rightBarButton.pp.setBadge(flexMode: PPBadgeViewFlexMode.tail)
    })
} else {
    rightBarButton.pp.addBadge(text: "99+")
    rightBarButton.pp.moveBadge(x: -5, y: 0)
    rightBarButton.pp.setBadge(height: 12)
    rightBarButton.pp.setBadge(flexMode: PPBadgeViewFlexMode.tail)
}