使用自动布局将UILabel放在UIView旁边

问题描述:

我想将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宽度适合它包含的文本。你知道这是怎么完成的吗?

感谢您的帮助。

您可以通过使用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

假设它是一个具有固定行数的标签,它知道它自己的宽度,您不必特别设置它。水平放置的约束条件如下。

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]; 

该约束仅指定水平布局。为了做到这一点,你必须指定垂直位置,这样约束系统就可以准确地确定你的视图的位置。