Центрирование метки в UIView - PullRequest
8 голосов
/ 10 апреля 2009

Каков лучший способ центрировать ярлык в UIView? Если вы делаете что-то вроде

UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(view.frame.origin.x / 2, view.frame.origin.y / 2, 50.0, 50.0)];

Затем вы устанавливаете исходную точку метки в центре вида. Лучше всего было бы установить центр обзора на эту точку, используя свойство center. Поэтому я попытался использовать следующий код:

UIView *aView = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
aView.backgroundColor = [UIColor darkGrayColor];
CGRect frame = aView.frame;

UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 125.0f, 30.0f)];
[aLabel setCenter:CGPointMake(frame.origin.x / 2, frame.origin.y / 2)];

Это дает метку, которая в значительной степени выходит за границы представления в верхнем левом углу.

Ответы [ 2 ]

18 голосов
/ 10 апреля 2009

Главное, что вы делаете неправильно, - это взятие половины значений origin , а не половины размеров

Однако вам даже не нужно рассчитывать это в этом случае - просто сделайте что-то вроде следующего:


UIView *aView = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
aView.backgroundColor = [UIColor darkGrayColor];

UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 125, 30)];
aLabel.center = aView.center;

(обратите внимание, что эти координаты не нужно принудительно плавать - в этом случае запись их в виде целых чисел кажется более читабельной).

Кроме того, это вопрос стиля - но поскольку вы уже используете синтаксис свойства (aView.backgroundColor), вы также можете использовать его и для свойства center: -)

6 голосов
/ 10 апреля 2009

Чтобы позиционировать любого дочернего по горизонтали в родительском месте, вы должны рассчитать его положение следующим образом;

childX = (parentWidth - childWidth) / 2

(Это также относится к высоте).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...