2017-11-21 10 views
0
if #available(iOS 11, *) { 

    let view = UIView() 
    view.frame = CGRect(x: 20, y: 0, width: 70, height: 50) 
    let btn: UIButton = UIButton(frame: CGRect(x:-14, y: 0, width: 30, height: 27)) 
    btn.setBackgroundImage(UIImage(named: "BackArrow"), for: UIControlState()); 
    btn.addTarget(self, action: #selector(ExampleController.barBtnBackAction), for: UIControlEvents.touchUpInside) 
    btn.center = CGPoint(x: btn.center.x,y :view.center.y) 
    let tap = UITapGestureRecognizer(target: self, action: #selector(ExampleController.barBtnBackAction)) 
    view.addGestureRecognizer(tap) 
    view.isUserInteractionEnabled = true 
    view.backgroundColor = UIColor.black 
    view.addSubview(btn) 
    let leftButtonItem = UIBarButtonItem(customView: view) 
    self.navigationItem.leftBarButtonItem = leftButtonItem 
} 

このコードを使用してiOS 11のナビゲーションバーに戻るボタンを設定してもうまくいきません。ユーザーは、私はそれを使用してカスタムアクションをしたいと私はこのコードを使用していた前にiOS 11の前に私はデフォルトを使用することができません:(iOS 10の下に与えられた)それはうまくいきました。iOS 11戻るボタンの問題

let barBtnNeg = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.fixedSpace, target: self, action: nil) 
barBtnNeg.width = -15.0 
let btn: UIButton = UIButton(frame: CGRect(x: 0, y: 0, width: 30, height: 27)) 
btn.setBackgroundImage(UIImage(named: "BackArrow"), for: UIControlState()); 
btn.addTarget(self, action: #selector(ExampleController.btnBackAction), for: UIControlEvents.touchUpInside) 
let barBtnBack = UIBarButtonItem(customView: btn) 
self.navigationItem.leftBarButtonItems = [barBtnNeg, barBtnBack] 

および#場合(Iバック矢印画像が右(アライメント誤差)に向かってシフトされます。このコードを使用して、Iフレームのx軸を減らす場合は静止画は、私は上記のコードを使用する必要はそれほどずれていない場合利用可能(iOS 11、*))。

戻るボタンの問題を解決するソリューション(ナビゲーションバー)カスタムイメージ、カスタムセレクタ(アクション)、およびカスタムアラインメントでは、

答えて

1

ナビゲーションコントローラにこのクラスを追加

class NavigationBar: UINavigationBar { 

    override func layoutSubviews() { 
     super.layoutSubviews() 

     for subview in self.subviews { 
      let stringFromClass = NSStringFromClass(subview.classForCoder) 

      if stringFromClass.contains("BarBackground") { 
       subview.frame.origin.y = -20 
       subview.frame.size.height = 64 
      } 
     } 
    } 
} 

uは

let navigationBar = NavigationBar(frame: CGRect(origin: CGPoint(x: 0, 
                     y: 20), 
                 size: CGSize(width: view.frame.width, 
                    height: 40))) 
     navigationBar.backgroundColor = UIColor(red: 46.0/255.0, green: 135.0/255.0, blue: 245.0/255.0, alpha: 1.0) 
     navigationBar.isTranslucent = false 
     let button1 = UIButton() 
     button1.setImage(UIImage(named: "Back"), for: UIControlState()) 
     button1.addTarget(self, action: #selector (goBack(_:)), for: UIControlEvents.touchUpInside) 
     button1.frame = CGRect(x: 0, y: 5, width: 20, height: 20) 
     let barButton1 = UIBarButtonItem(customView: button1) 
     self.navigationItem.leftBarButtonItem = barButton1 
     navigationBar.items = [navigationItem] 
     self.view .addSubview(navigationBar) 
を必要とするナビゲーションバーを作成します
関連する問題