2012-06-15 2 views
0

Я пытаюсь вычислить позицию для размещения метки на экране. Цель состоит в том, чтобы поместить «слово» ярлык в правом нижнем углу первого квадратного блокаРазмещение текста на UIView в настраиваемом месте

Если желтоватый квадрат определяется как

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

Происхождение из 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)]; 

Вы вычтите ширину этикетки от ширины надтаблицы плюс его х происхождения, и сделать то же самое на оси у с высотой. Таким образом, верхний левый угол обзора находится в нужном месте.

+0

К сожалению, это не сработало – JAM

+0

О, я только что видел, что вы вызвали - sizeToFit. Обновление моего ответа сейчас. –

+0

Отлично. Спасибо, сэр – JAM

Смежные вопросы