2017-09-29 6 views
0

SwiftIconsを使用してボタンを作成しましたが、アイコンの位置が正しくありません。私はそれを修正するために、負の幅を追加します。Swift UIBarButtonItemはプログラムで作成されました

let menuButton = UIBarButtonItem() 
menuButton.setIcon(icon: .ionicons(.chevronLeft), iconSize: 24, color: .white, cgRect: CGRect(x: 0, y: 0, width: 24, height: 24), target: self, action: #selector(menuButtonClick)) 
let negativeSpacer:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.fixedSpace, target: nil, action: nil) 
negativeSpacer.width = -13.7; 
self.navigationItem.leftBarButtonItems = [negativeSpacer, menuButton] 

これは、iOSの10以下のために動作しますが、iOSの11の上に幅が負の値を取ることはありません。
Image
どうすればこの問題を解決できますか?

回答:

let menuButton = UIBarButtonItem(title: "", style: .plain, target: self, action: #selector(menuButtonClick)) 
menuButton.image = UIImage.init(icon: .ionicons(.chevronLeft), size: CGSize(width: 24, height: 24)) 
menuButton.imageInsets = UIEdgeInsetsMake(0, -13.7, 0, 0) 
self.navigationItem.leftBarButtonItem = menuButton 

答えて

0

たぶん、あなたは、このメソッドを使用してボタンのedgeInsetsを変更することで試すことができます。

UIEdgeInsets UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right); 

それはあなたがあなたのbarButtonItemにいくつかのパディングを追加することができます。ここ はあなたの実際のコードでそれを使用する方法である。

negativeSpacer.imageInsets = UIEdgeInsetsMake(0, -13.7, 0, 0); 
+0

negativeSpacerまたはメニューボタン:( – rejjer

+0

に印加される正と負の値の両方にない反応。しかし、それは動作しますが、アイコンはbarButton用画像として追加したときに、ありがとう! – rejjer

関連する問題