2017-11-21 2 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 
      } 
     } 
    } 
} 

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) 
필요 탐색 모음을 만들