Как центрировать UIImage и UILabel по горизонтали вместе? - PullRequest
2 голосов
/ 13 марта 2012

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

Поскольку длина метки изменяется в зависимости от длины имени пользователя, (размер изображения фиксированный) Я не могу установить положение в качестве фиксированного значения.

Теперь я меняю положение изображения и lalel во время выполнения, это не удобно.

Есть какой-нибудь хороший способ сделать это?

Спасибо:)

Вот снимок:

enter image description here enter image description here enter image description here

Отлично.Я знаю, что нет очень удобного способа сделать это только с IB.И я изучаю функцию [label sizetoFit].Это очень полезно.

В Android это очень удобно делать только с макетом XML.Но в IOS я должен написать код для управления положением изображения и метки.Да ... Не так уж плохо.

Спасибо всем:)

Ответы [ 3 ]

3 голосов
/ 13 марта 2012
[label sizetoFit];
label.center =imageView.center;

это сделает центр метки в центре изображения ... и он появится сверху ...

теперь вы можете просто использовать CGRect манипуляцию для перемещения источника метки вниз на основевысота вашего изображения.

Редактировать .. теперь вы можете сделать это ..

CGRect frame = label.frame;
frame.origin.x -= imageview.frame.size.width/2 - 15; // you can change 15 to a  more appropriate number based on your preference..
label.frame = frame;

Сделайте то же самое после того, как вы выполните 2 строки кода, приведенные сверху в моем ответе.

1 голос
/ 13 марта 2012

Выполните некоторые вычисления

Ширина UIImageView + Ширина смещения (пробел b / n UIImageView и UILabel "Сохранить это как постоянное значение") + UILabel Width = Вы получите некоторую ширину 'X'.

Ширина экрана iPhone составляет 460.

320-X = Оставшаяся ширина.

Оставшаяся ширина / 2 передает это значение в значение X UIImageView.Это может помочь вам.

1 голос
/ 13 марта 2012
#define MARGIN 10.0f

В вашем методе -layoutSubviews сделайте следующее:

[ label sizeToFit ] ;
CGRect r = label.frame ;
r.origin = (CGPoint){ CGRectGetMaxX( imageView.frame ) + MARGIN, CGRectGetMidY( imageView.frame ) - 0.5 * r.size.height } ;
label.frame = CGRectIntegral( r ) ;

обновите информацию о том, как центрировать область просмотра изображения и надписи

bounds должен быть установлен в пределах границ вида

//
// center an image view + label in parent view, with label to right of image view
//

[ label sizeToFit ] ;
CGSize size = (CGSize){ imageView.image.size.width + MARGIN + label.bounds.size.width,
    MAX( imageView.image.size.height, label.bounds.size.height } ;
CGRect r = (CGRect){ 
    { CGRectGetMidX( bounds ) - 0.5 * size.width, 
        CGRectGetMidY( bounds ) - 0.5 * size.height }, 
    size }
} ;

CGRect imageFrame, labelFrame ;
CGRectDivide( r, &imageFrame, &labelFrame, imageView.image.size.width, CGRectMinXEdge ) ;
imageView.frame = imageFrame ;
labelView.frame = labelFrame ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...