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

时间:2013-12-10 13:16:00

标签: ios objective-c autolayout

我想在UILabel的右侧放置一个UIView,水平放置。 UILabel的宽度可变,具体取决于其中的文本。图形:

|这是文字|我的观点|

|这是很长的文字|我的观点|

您能指点我如何使用自动布局以编程方式创建此界面吗?

我有这个:

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

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

但现在我需要自动布局限制将myView放在myLabel的右侧,并使myLabel宽度适合其包含的文字。你知道这是怎么做的吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用 sizeToFit

为UILabel设置动态宽度
[self.myLabel sizeToFit]

之后,您将获得

的最大x帧
CGRectGetMaxX(self.myLabel.frame)

因此,如果要将视图放在标签旁边,请将视图的框架设置为

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

答案 1 :(得分: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];

此约束仅指定水平布局。要完成这项工作,您还必须指定垂直位置,以便约束系统可以确定精确定位视图的位置。