2017-09-01 69 views
0

我創建了具有中心垂直+中心水平約束的xib文件,稍後將作爲navigationItem的titleView。 enter image description here如何從導航項中的xib自定義視圖中心titleView

裏面的xib的init我設置了文字和圖片。

class UIViewFromNib: UIView { 
    @IBOutlet var view: UIView! 
    @IBOutlet weak var titleLabel: UILabel! 
    @IBOutlet weak var titleImageView: UIImageView! 
    init(frame: CGRect,title:String,image:UIImage) { 
     super.init(frame: frame) 
     UINib(nibName: "NavTitle", bundle: nil) 
      .instantiate(withOwner: self, options: nil) 
     addSubview(view) 
     view.frame = self.bounds 
     titleLabel.text = title 
     titleImageView.image = image 
    } 
} 

然後,在videDidLoad中,我將視圖添加到navigationItem的titleView中。

let rect = CGRect(x: 0, y: 0, width: width, height: 40) 
    let width = self.view.bounds.width 
    let view = UIViewFromNib(frame: rect, 
          title: title, 
          image: image) 

    navigationItem.titleView = view 
    navigationItem.titleView?.sizeToFit() 

但在運行時,視圖不在中心。 LTR

在RTL更糟

RTL

我怎樣才能解決呢? 感謝

回答

1

支持自動佈局。

let screenWidth = UIScreen.main.bounds.size.width 
    let viewWidth = 200.0 
    let rect = CGRect(x: (Double)(screenWidth/2)-(Double)(viewWidth/2), y: 0, width: viewWidth, height: 40) 
1

嘗試修改此行:

let rect = CGRect(x: 0, y: 0, width: width, height: 40) 

let rect = CGRect(x: 0, y: 0, width: 200, height: 40) 

問題是你給屏幕的寬度與視圖。在運行時,當返回按鈕出現時,視圖寬度變爲(totalWidth - navigationBackButtonWidth),它改變其中圖像的中心對齊。

相關問題