2012-03-13 156 views
2

我有一個用戶圖標和用戶名標籤 而且我希望圖像和標籤在屏幕上水平對齊。如何將UIImage和UILabel水平居中在一起?

由於標籤的長度隨用戶名稱的長度而變化(圖像的大小是固定的) 我不能將該位置設置爲固定值。

現在我在運行時更改圖像和寬度的位置, 這很不方便。

有沒有什麼好的方法可以做到這一點?

謝謝:)

這裏是快照:

enter image description here enter image description here enter image description here

所有權利。 我知道有沒有一種非常方便的方式來做到這一點,只是與IB。 我學習了[label sizetoFit]的功能。 這非常有幫助。

在android中,使用xml佈局來執行此操作非常方便。 但在ios中,我必須編寫代碼來控制圖像和標籤的位置。 是的...不是太糟糕。

謝謝大家:)

+1

你能發表一些快照嗎? – 2012-03-13 05:33:41

+0

我已添加快照。圖像的大小是固定的,但是位置應該隨着標籤的長度而改變。 對不起,我可憐的英語.. – 2012-03-13 05:40:06

回答

3
[label sizetoFit]; 
label.center =imageView.center; 

這會使圖像上的標籤中心center..and它會出現在頂......

現在你可以使用CGRect操縱移動根據您的圖片高度向下標註原始標籤。

編輯..現在你可以做到這一點..

CGRect frame = label.frame; 
frame.origin.x -= imageview.frame.size.width/2 - 15; // you can change 15 to a more appropriate number based on your preference.. 
label.frame = frame; 

做好上面你做的兩行代碼在我的答案上頂後給予。

+0

[標籤sizetoFit]效果很好。 但是label.center = imageView.center;沒有; 也許我沒有清楚表達。 圖像和標籤具有相同的positon.y,但position.x是不同的。 圖像位於標籤的左側,標籤位於圖像的右側。 – 2012-03-13 05:31:30

+1

用截圖解釋你想要什麼..? – Shubhank 2012-03-13 05:35:55

+0

我已添加快照 – 2012-03-13 05:40:43

1
#define MARGIN 10.0f 

在你-layoutSubviews方法,這樣做:

[ label sizeToFit ] ; 
CGRect r = label.frame ; 
r.origin = (CGPoint){ CGRectGetMaxX(imageView.frame) + MARGIN, CGRectGetMidY(imageView.frame) - 0.5 * r.size.height } ; 
label.frame = CGRectIntegral(r) ; 

更新這裏是如何居中圖像視圖和標籤單元

bounds應設置封閉視圖的邊界

// 
// center an image view + label in parent view, with label to right of image view 
// 

[ label sizeToFit ] ; 
CGSize size = (CGSize){ imageView.image.size.width + MARGIN + label.bounds.size.width, 
    MAX(imageView.image.size.height, label.bounds.size.height } ; 
CGRect r = (CGRect){ 
    { CGRectGetMidX(bounds) - 0.5 * size.width, 
     CGRectGetMidY(bounds) - 0.5 * size.height }, 
    size } 
} ; 

CGRect imageFrame, labelFrame ; 
CGRectDivide(r, &imageFrame, &labelFrame, imageView.image.size.width, CGRectMinXEdge) ; 
imageView.frame = imageFrame ; 
labelView.frame = labelFrame ; 
+0

其中'MARGIN'是您想要的圖像視圖的右邊緣和標籤的左邊緣之間需要多少空間 – nielsbot 2012-03-13 05:43:19

+0

我應該指出「UILabel」中的文本居中垂直,所以你也可以設置標籤的高度與圖像視圖的高度相同,以達到相同的效果。 – nielsbot 2012-03-13 05:45:11

+0

是的,高度是相同的。謝謝。我又添加了兩個快照。 – 2012-03-13 05:47:50

1

做一些計算ation

UIImageView +偏移寬度的寬度(空間b/n UIImageView和UILabel「將此值保持爲常量值」)+ UILabel Width =您將獲得一些「X」寬度。

iPhone屏幕寬度爲460.

320-X =剩餘寬度。

剩餘寬度/ 2將此值傳遞給UIImageView的X值。這可能會幫助你。

+0

是的,我這樣做。但我很抱歉。也許寬度是320 :) – 2012-03-13 06:05:47

+0

抱歉我的錯誤! – 2012-03-13 06:39:26