2017-11-01 8 views
1

私のUIViewControllerにある問題は、rightBarButtonItemが垂直に整列していないことです。ボタンを10ピクセル下に移動したいと思います。`rightBarButtonItem`が垂直に整列しません

enter image description here

let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(didPressCancelButton)) 
navigationItem.setRightBarButton(cancelButton, animated: true) 
navigationItem.rightBarButtonItem?.setBackgroundVerticalPositionAdjustment(12, for: .default)     navigationItem.rightBarButtonItem?.setTitlePositionAdjustment(UIOffset(horizontal: 0, vertical: 12), for: .default) 

私もviewDidLayoutSubviews()が、何もするにコードを移動しようとしました。

現在の設定:iOSの11

+0

まず、rightBarButtonにUIViewを追加し、そのビューでボタンをサブビューとして追加し、それに応じて+適用制約を配置することをお勧めします。 –

+0

私はこれを達成しました。私は検索バーを少し動かす代わりに(-8pt) –

答えて

0

カスタムビューを使用してUIBarButtonItemを作成することができます。このカスタムビューは、実際のUIButton(サブビューとして)が上からxピクセル(x =下に移動するピクセル数)に配置されたUIViewになります。ここで

はそれをやって行く方法の例です:

var button = UIButton(type: .custom) 
button.setTitle("Settings", for: .normal) 
button.titleLabel?.font = UIFont.systemFont(ofSize: 14.0) 
button.setTitleColor(UIColor(red: 179.0/255.0, green: 40.0/255.0, blue: 18.0/255.0, alpha: 1), for: .normal) 
button.frame = CGRect(x: 0, y: 0, width: 50, height: 20) 
button.addTarget(self, action: #selector(self.yourCustomSelectorHere), for: .touchUpInside) 

var backButtonView = UIView(frame: CGRect(x: 0, y: 0, width: 63, height: 33)) 
    backButtonView.bounds = backButtonView.bounds.offsetBy(dx: -14, dy: -7) 
    backButtonView.addSubview(button) 
    var barBtnItem = UIBarButtonItem(customView: backButtonView) 
    navigationItem?.rightBarButtonItem = barBtnItem 

あなたは自分の視野内の正しい位置にあるように少しのコードを設定する必要があります。

+0

明日お試しいただきありがとうございます。悲しいことに私はそれを変更する必要があります...(私の質問では同じコードで)別のビューコントローラでleftBarButtonItemを垂直に整列させることができましたが、rightBarButtonItemsでは機能していないようです。 – aneuryzm

+0

iOS 11は問題の遊び場です。あなたがそれを働かせないと私に教えてください。私はもう少しそれを見ることができます。乾杯! –

+0

あなたのソリューションの仕事。私はそれがiOS10上に正しく配置されるかどうか疑問に思います(私は現時点でそれを確認する方法はありません)。 – aneuryzm

関連する問題