2013-12-10 37 views
0

我想將UIView水平放置在UILabel的右邊。 UILabel具有可變寬度,具體取決於其中的文本。以圖形方式:使用自動佈局將UILabel放在UIView旁邊

|這是文字|我的看法|

|這是很長的一段文字|我的看法|

你能指點我如何使用自動佈局以編程方式創建此接口嗎?

我有這樣的:

self.myLabel = [[[UILabel alloc] init] autorelease]; 
self.myView = [[[UIView alloc] init] autorelease]; 

[self addSubview:self.myLabel]; 
[self addSubview:self.myLabel]; 

但現在我需要自動佈局約束放置myViewmyLabel權,使myLabel寬度適合它包含的文本。你知道這是怎麼完成的嗎?

感謝您的幫助。

回答

0

您可以通過使用sizeToFit

[self.myLabel sizeToFit] 

設置您的UILabel動態寬度比後,您將通過

CGRectGetMaxX(self.myLabel.frame) 

所以,如果你要放置得到最大的X框架查看旁邊的標籤設置視圖的框架爲

self.myView.frame = CGRectMake(CGRectGetMaxX(self.myLabel.frame)+10, y, WIDTH, HEIGHT); 
+0

謝謝,但我想使用自動佈局。 –

+0

自動佈局約束不適合您的標籤寬度與文本大小。你需要使用上述方法 – manujmv

0

假設它是一個具有固定行數的標籤,它知道它自己的寬度,您不必特別設置它。水平放置的約束條件如下。

NSMutableDictionary viewsDictionary = [[NSMutableDictionary alloc] initWithObjects:@[self.myLabel, self.myView] forKeys:@[@"mylabel", @"myview"]]; 
NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[mylabel]-[myview]" options:0 metrics:nil views:viewsDictionary]; 

該約束僅指定水平佈局。爲了做到這一點,你必須指定垂直位置,這樣約束系統就可以準確地確定你的視圖的位置。

相關問題