2016-05-16 53 views
0

我想我的應用程序,以這樣的表現:航海中心兩個視圖titleview的

enter image description here

有確切的行爲我NavigationItem.titleView

我按照這些步驟是非常重要的到目前爲止:

我創造編程在我的應用程序三個視圖:

(1)container =>成立(2)和(3)=>具有gestureRecognizer附

let container = UIView(frame: CGRectMake(0,0,200,40)) 

(2)imageContainer =>具有圖像

 let imageContainer = UIImageView(frame: CGRectMake(0, 0, 30, 30)) 
     imageContainer.image = UIImage(named: "mock.jpg") 

(3)textContainer = >有一些文字

 let textContainer = UILabel(frame: CGRectMake(0,0, 180, 20)) 
     textContainer.text = "Group xY" 

按照我設置的圖像的中心對準他們:

imageContainer.center = CGPointMake(container.frame.size.width/2, 
     container.frame.size.height/2) 
textContainer.center = CGPointMake(container.frame.size.width/2, 
      container.frame.size.height/2) 

現在,我將所有的子視圖我查看和設置

self.navigationItem.titleView = (1) 

啓動應用表明,該titleview的的元素沒有正確對齊

enter image description here

有沒有一種方法可以正確地實現這種確切的行爲?

注意:不要擔心圓形圖像。我知道如何實現這一點。

回答

1

您應該將textContainer的大小設置得更接近文本的邊界。您可以通過調用sizeToFit來完成此操作,然後您需要將imageContainer設置爲文本的左側,以便圖像的中心應該是圖像寬度的一半,再加上文本開頭的緩衝區。你可以這樣說imageContainer.center = CGPointMake(textContainer.frame.minX - imageContainer.frame.size.width * 0.5 - buffer,container.frame.size.height/2)。您的代碼應該是這個樣子:

let container = UIView(frame: CGRectMake(0,0,200,40)) 
let buffer:CGFloat = 8.0 
let maxWidth:CGFloat = 120.0 

let imageContainer = UIImageView(frame: CGRectMake(0, 0, 30, 30)) 
imageContainer.image = UIImage(named: "profile.jpg") 

let textContainer = UILabel(frame: CGRectMake(0,0, 180, 20)) 
textContainer.text = "Group xY" 
textContainer.adjustsFontSizeToFitWidth = true 
textContainer.minimumScaleFactor = 0.95 

textContainer.sizeToFit() 
textContainer.frame.size.width = min(maxWidth, textContainer.frame.size.width) 
textContainer.center = CGPointMake(container.frame.size.width/2, 
            container.frame.size.height/2) 
imageContainer.center = CGPointMake(textContainer.frame.minX - imageContainer.frame.size.width * 0.5 - buffer, 
            container.frame.size.height/2) 

container.addSubview(imageContainer) 
container.addSubview(textContainer) 

,這將給你enter image description here你的容器。

+0

謝謝。這有很大幫助。有沒有辦法設置視圖的最大寬度?如果我把一個更長的文本,它整個Navbar是填充,但我也想有我的Navigationbar.barButtonitems – JVS

+1

我更新了我的答案。如果sizeToFit大於你想要的最大寬度,那麼你可以檢查標籤的寬度,如果它設置爲最大寬度,則保持不變(例如'min(maxWidth,textContainer.frame.size.width)'也可以儘管你可能不想縮小標題的範圍,但要調整標籤縮放因子以適應縮小。 – beyowulf

相關問題