2017-09-25 65 views
1

我已經設置了UINavigation欄外觀看起來像follwing,爲什麼三個按鈕出現在iOS 11導航backBarButtonItem的位置?

代碼:

fileprivate class func barButtonAppearance() { 
    var attributes = [String : AnyObject]() 
    attributes[NSFontAttributeName] = UIFont(name: .Regular, size: 14) 
    attributes[NSForegroundColorAttributeName] = UIColor.descriptionColor() 
    UIBarButtonItem.appearance().setTitleTextAttributes(attributes, for: UIControlState()) 

    let backImage = UIImage.image(assetID: .NavigationBarBack, caps: UIEdgeInsetsMake(0, 23, 0, 0)).withRenderingMode(.alwaysTemplate) 
    UIBarButtonItem.appearance().setBackButtonBackgroundImage(backImage, for: .normal, barMetrics: .default) 

    UINavigationBar.appearance().backIndicatorTransitionMaskImage = backImage 
} 

這是工作的罰款,直到我們在iOS的11

考驗了我們的應用程序如果我的評論下面的代碼

let backImage = UIImage.image(assetID: .NavigationBarBack, caps: UIEdgeInsetsMake(0, 23, 0, 0)).withRenderingMode(.alwaysTemplate) 
UIBarButtonItem.appearance().setBackButtonBackgroundImage(backImage, for: .normal, barMetrics: .default) 

它工作正常,但與默認蘋果給回按鈕。

這裏是出現在導航欄的屏幕截圖,

enter image description here

我是不是能夠得到什麼事。有人可以提出我的解決方法嗎?謝謝。

+0

任何運氣。我也遇到同樣的問題 –

+0

不,我以不同的方式解決問題。我添加了一個左側導航按鈕,並在BaseViewController中有一個通用方法來彈出ViewControllers。 –

+0

我找到了方法,請查看我的答案。它將適用於所有的ios版本。 –

回答

1
UINavigationBar.appearance().backIndicatorImage = image.withRenderingMode(.alwaysOriginal) 
UINavigationBar.appearance().backIndicatorTransitionMaskImage = image.withRenderingMode(.alwaysOriginal) 

if #available(iOS 11, *) { 
    UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.clear], for: .normal) 
    UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.clear], for: .highlighted) 
} else { 
    UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffset(horizontal: -60, vertical: -60), for: .default) 
} 

圖像的UIImage。無需在每個控制器上創建基本控制器或編寫代碼。只需將這些行放入應用程序委託中即可。

0

您可以使用此方法:

func addBackButton() { 
    let leftButton = UIBarButtonItem(image: Asset.backIco, style: UIBarButtonItemStyle.Plain, target: self, action: #selector(self.popViewControllerAnimated(_:))) 
    self.navigationItem.leftBarButtonItem = leftButton 
} 

在擴展的UIViewController

貼吧