2017-08-08 58 views
0

我在我的AppDelegate斯威夫特如何改變backIndicatorImage的位置和大小

UINavigationBar.appearance().backIndicatorImage = #imageLiteral(resourceName: "backarrow") 

得到這個代碼和該代碼顯示了這樣的事情

enter image description here

我如何可以調整和改變位置的形象?

+0

問您的設計師適當的圖像 – zombie

+0

這可能有助於獲得正確的圖像大小'UIBarButtonItem.appearance()。setBackButtonTitlePositionAdjustment(UIOffsetMake(0,-80.0),forBarMetrics:.Default)' – zombie

回答

1

嗨,你能實現它的方式如下: -

var backImage = UIImage(named: "backarrow")  
backImage = resizeImage(image: backImage!, newWidth: 40) //the width that you want for the back button image 
UINavigationBar.appearance().backIndicatorImage = backImage 

,這裏是將圖像尺寸調整功能

func resizeImage(image: UIImage, newWidth: CGFloat) -> UIImage? { 

    let scale = newWidth/image.size.width 
    let newHeight = image.size.height * scale 
    UIGraphicsBeginImageContext(CGSize(width: newWidth, height: newHeight)) 
    image.draw(in: CGRect(x: 0, y: 0, width: newWidth, height: newHeight)) 

    let newImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return newImage 
} 
+0

哦,謝謝!沒有創建一個新的按鈕 – sakoaskoaso

+0

@sakoaskoaso對不起,我把它命名不正確,我會更新它並將其命名爲backImage –

0

你必須改變一個自定義的按鈕。 定義一個UIBarButtonItem並用您的自定義按鈕替換默認的一個。

var customButton = UIBarButtonItem(image: closeButtonImage, style: .plain, target: self, action: #selector(YourController.backPressed(_:))) 
self.navigationItem. backBarButtonItem = customButton 
+0

如何實現回去? – sakoaskoaso

+0

在推新視圖控制器之前或之後,我會執行它嗎? – sakoaskoaso

+0

您可以創建一個自定義的NavigationController,它可以在'UINavigationController'子類中定義或在prepareForSegue中定義它。如果你在'UIViewController'的'viewDidLoad'中設置了這個參數,我不確定它會起作用,但你可以試試。 – Maxime

0

只需使用自定義UIBarButtonItem並隱藏默認的一個。

let backButton = UIBarButtonItem(image: UIImage(named: "Your_Back_Button_Image", style: .plain, target: self, action: #selector(popCurrentViewController) 
    self.navigationItem.setHidesBackButton(true, animated: true) 
    self.navigationItem.leftBarButtonItem = backButton 

要實現後面的功能:

func popCurrentViewController(_ animated: Bool) 
{ 
    _ = self.navigationController?.popViewController(animated: true) 
} 
+0

我推後右? – sakoaskoaso

+0

您只需在推送的控制器中實現它,並在其上顯示自定義後退按鈕。 – PGDev