如何根据另一个标签的字符串长度动态更改标签的位置?

时间:2011-12-30 08:26:43

标签: iphone

我有两个标签label1和label2以及一个tableview,当用户点击tableview时,tableview的内容显示在两个labels.means中,如果tableview单元格包含堆栈,而在text-label.text中是1,1。我需要在label2中的label1和1中显示堆栈,我已经完成了这个。但是问题是当tableview单元格内容很大时,而不是堆栈有堆栈溢出它由于大字符串内容而与label2重叠 例如stack:1可以,但是当内容是stackoverflow时,它将出现stackoverflow1 或者stackove ... 1之类的东西。所以我需要的是label2必须根据label1的字符串长度改变它的位置。怎么做?。希望你理解我的问题。 提前谢谢。

3 个答案:

答案 0 :(得分:2)

您可以借助以下代码获取字符串大小

CGSize stringSize = [myString sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE]];

现在你可以获得第一个标签的框架,然后是文本大小。我希望你现在很容易调整第二个标签的位置。如有任何问题请告诉我。 这是我的代码,用于获取标签的行数,以便我可以获得第一个标签的高度,以便在其后添加第二个标签。

CGSize stringSize = [myString sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE]];
    int labelwidth = firstLabel.width;
    int number_of_lines = stringSize.width/labelwidth;
    int size = stringSize.width;
    int reminder = size % labelwidth;
    if(reminder != 0){
        number_of_lines++;
    }
// now first label height will be

rowHeight = number_of_lines*FONT_SIZE + GAP_BETWEEN_ROWS

现在您可以将此rowHeigh用作第二个标签的frame.origin.y。

祝你好运

答案 1 :(得分:1)

您可以在设置新文本时设置标签的任何框架:

[yourLabel setFrame: CGRectMake(x, y, w, h)];

根据新文本的长度计算它。 但是......你真的需要2个标签吗?如果你把它放在一行而你这样做只是因为你有2个单词,你可以这样做更容易: 使用1个带有所有屏幕widgh的标签并设置如下新文本:

[yourLabel setText:[NSString stringWithFormat(@"%@ %@", text1, text2)]];

答案 2 :(得分:0)

另一种实现此目的的方法是,如果你想要在两个单独的标签上显示,你必须根据你的文本设置第一个标签的框架来计算第一个标签的宽度,然后将第5个标签添加到第一个标签的宽度,这将变为x你下一个标签的位置。