我正在尝试计算在屏幕上放置标签的位置。目标是在第一个方块的右下角放置“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];
这就是:
这里的问题显然是正确的偏移。 了解文字的字体和大小,如何才能正确计算?
答案 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轴上用高度做同样的操作。这样,视图的左上角就放在了正确的位置。