2013-03-14 69 views
0

我用風景方向UIView創建了一個.xib。在風景視圖中有一個肖像標籤

我試圖解決的問題是,我想要一個UILabel沿着一邊垂直運行,文本從視圖底部到頂部讀取,但我無法弄清楚如何做到這一點。那可能嗎?

圖片來說明我的意思

enter image description here

回答

2

你需要旋轉然後翻譯它,把它放在你想要的地方。旋轉發生在標籤的中心,這就是爲什麼你需要翻譯它。 如果您在左上角放置了文本標籤(最後顯示的標籤看起來像圍繞標籤的左上角旋轉),您可以使用如下代碼:

- (void)viewDidLayoutSubviews { 
    CGAffineTransform transform = CGAffineTransformMakeRotation(3 * M_PI_2); 
    CGAffineTransform transform2 = CGAffineTransformConcat(transform, CGAffineTransformMakeTranslation(floor(-self.label.bounds.size.width/2), floor(-self.label.bounds.size.width/2))); 
    self.label.transform = transform2; 
} 

您可能需要稍微調整翻譯值才能得到想要的,但您肯定希望它們是整數(我已用地板完成),因此標籤很清晰。

+0

謝謝,我有類似的東西,但我沒能把它放在正確的位置。最後,我保留了原來的框架,然後再次將框架放回原位,這使標籤保持與我在xib中設置的位置相同的位置。 – Haze 2013-03-14 17:16:49

+0

當您考慮翻譯時,請考慮如何將佈局標籤的中心點移動到您想要的位置。在我的例子中,標籤沿着視圖的底部放置,我想要它沿着左側垂直放置。在這種情況下,從x和y中減去一半的標籤寬度將中心移到左邊緣,並且足以使標籤從底部開始。 – 2013-03-14 17:30:34

2

當然可以。你需要做一個轉換。

yourlabel.transform = CGAffineTransformMakeRotation(-M_PI/2); 
+0

感謝您的回覆,您的回答也得到了幫助,所以我投了贊成票。 – Haze 2013-03-14 17:17:45