iOS:CGRectMake不会更改UILabel的位置

时间:2013-05-26 21:22:46

标签: iphone ios cgrectmake

我通过故事板创建了一个标签。订单是这样的: 查看 - >滚动视图 - >一堆标签。

这是我想要实现的文本输出: 12月2日<剩余30天&gt;

&lt;&gt;封闭文本在较小的字母和不同的UI标签中。

由于月份名称是动态的并且宽度发生了变化,我尝试使用CGRectMake来改变&lt;&gt;的位置。附上的文字。 但它没有用。我尝试更改函数的参数,但标签保持不变。它不会从故事板中设置的初始位置移动。

label_days_left.frame = CGRectMake(50, 10, 100, 99);

编辑:

- (void) alignDaysLeft{
    //code to align the label just after the match date
    CGFloat dateLabelWidth = [label_date.text sizeWithFont:label_date.font].width;
    CGFloat dateLabelHeight = [label_date.text sizeWithFont:label_date.font].height;
    CGFloat someGap = 0;
    CGFloat daysLeftX = label_date.frame.origin.x + dateLabelWidth + someGap;
    CGFloat daysLeftY = label_date.frame.origin.y;
    [label_date sizeToFit];
    //label_days_left.frame = CGRectMake(daysLeftX, daysLeftY, 100, dateLabelHeight);
    label_days_left.frame = CGRectMake(50, 10, 100, 99);
    label_days_left.text = [NSString stringWithFormat:@"lolo"];
    NSLog(@"date width - %f", daysLeftX);

}

label_date是包含月份和日期的变量。 label_days_left是我试图在月份旁边放置的标签变量。

编辑2: Frames

编辑3: 我创建了一个新项目。 在视图上拖动标签。 创建了一个出口。 合成它。

并使用以下代码移动它 -

[labia setFrame:CGRectMake(0, 100, 5, 99)];

它不起作用。我在做什么错误?

2 个答案:

答案 0 :(得分:8)

您是否启用了AutoLayout?如果是这样那么这可能是你的问题,因为你不应该担心使用AutoLayout设置框架,而是设置约束。

答案 1 :(得分:1)

NSString *someString = [NSString stringWithFormat:@"%@",label_date.text]
UIFont *yourFont = [UIFont systemFontOfSize:22.0];
CGSize stringBoundingBox = [someString sizeWithFont:yourFont];
[label_days_left setFrame:CGRectMake(label_days_left.frame.origin.x, 10, stringBoundingBox.width, 99)];
[label_days_left setText:someString];

请尝试一次....