【发布时间】:2013-09-30 15:10:56
【问题描述】:
我尝试在网上搜索,但没有找到我的问题的明确答案,所以我来寻求您的专家建议。我有一个带有 2 个标签的视图。两个标签都将显示来自 plist 的不同字符串长度。
当我运行应用程序时,标签将根据字符串长度与其他标签重叠。
下面是我的问题的截图
【问题讨论】:
标签: iphone ios objective-c
我尝试在网上搜索,但没有找到我的问题的明确答案,所以我来寻求您的专家建议。我有一个带有 2 个标签的视图。两个标签都将显示来自 plist 的不同字符串长度。
当我运行应用程序时,标签将根据字符串长度与其他标签重叠。
下面是我的问题的截图
【问题讨论】:
标签: iphone ios objective-c
嗯,你可以通过多种方式解决它。
例如,您可以用所需的文本填充您的第一个标签,然后调用到
[label1 sizeToFit]
通过该调用,您的标签现在具有合适的大小,适合您的文本长度。现在您可以将第二个标签放在第一个标签之后。
label2.frame = CGRectMake (x, label1.frame.size.height + ..., .....)
希望对你有帮助!
【讨论】:
您需要设置第二个标签的“Y”。获取第一个标签文本的高度,然后将其设置为第二个标签“Y”。
希望对你有帮助。
CGSize LblSize=[[Label1 text] sizeWithFont:[UIFont systemFontOfSize:14.0f] constrainedToSize:CGSizeMake(320.0f, 400.0f)];
UILabel *Label2=[[UILabel alloc] initWithFrame:Label2Rect];
CGRect Label2Rect=[Label2 Frame];
Label2Rect.origin.y=LblSize.height+30.0f; //add some extra spaces, I have added 30.0f here
[Label2 setFrame:Label2Rect];
【讨论】:
更好的选择是使用 UITextView 而不是 UILabel 但如果你仍然想使用 lable 那么
使用下面的代码,您可以找到文本的高度,并可以根据该高度设置标签的框架
NSString *text = [arr objectAtIndex:indexPath.row];
CGSize constraint = CGSizeMake(contentWidth - (CELL_CONTENT_MARGIN * 2), 20000.0f);
CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:20] constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping];
CGFloat height = MAX(size.height, 44.0f);
这里的 contentWidth 是你的标签的宽度,CELL_CONTENT_MARGIN = 10;
【讨论】:
您必须更改您的 secondLabel 来源。
CGRect frame = secondLabel.frame;
frame.origin.y= firstLabel.frame.origin.y + firstLabel.frame.size.height;
[secondLabel setFrame:frame];
【讨论】: