我想在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
宽度适合其包含的文字。你知道这是怎么做的吗?
感谢您的帮助。
答案 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];
此约束仅指定水平布局。要完成这项工作,您还必须指定垂直位置,以便约束系统可以确定精确定位视图的位置。