在自定义位置的UIView上放置文本

时间:2012-06-15 21:15:10

标签: objective-c ios

我正在尝试计算在屏幕上放置标签的位置。目标是在第一个方块的右下角放置“word”标签

如果黄色方块定义为

myView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 70, 70)];
[self.view addSubview:myView];
[myView setBackgroundColor:[UIColor colorWithHexString:@"FFFFEC"]];

使用它,我想在它的右下角放置一个标签

l1 = [[UILabel alloc] init];
[l1 setText:@"word"];
[l1 setFrame:CGRectMake(myView.frame.origin.x + myView.frame.size.width, 
                        myView.frame.origin.y + myView.frame.size.height,
                       700, 700)];
[l1 setFont:[UIFont fontWithName:@"Arial" size:10.0]];
[l1 setBackgroundColor:[UIColor colorWithHexString:@"CCFFFEC"]];
[l1 setTextAlignment:UITextAlignmentRight];
[l1 sizeToFit];

这就是:

这里的问题显然是正确的偏移。 了解文字的字体和大小,如何才能正确计算?

enter image description here

1 个答案:

答案 0 :(得分:1)

UIView的原点映射到左上角。您遇到的问题与计算标签框架的方式有关。调用sizeToFit后需要计算框架,以确保在更改标签宽度和高度后将其放置在正确的位置。

您需要在致电[l1 sizeToFit];

后拨打此电话
[l1 setFrame:CGRectMake((myView.frame.origin.x + myView.frame.size.width)-li.frame.size.width, 
                            (myView.frame.origin.y + myView.frame.size.height)-l1.frame.size.height,
                           l1.frame.size.width, l1.frame.size.height)];

从超视图的宽度加上x的原点减去标签的宽度,并在y轴上用高度做同样的操作。这样,视图的左上角就放在了正确的位置。