Изменить размер UILabel правильно в верхней части UIImageView - PullRequest
2 голосов
/ 16 января 2012

Моя проблема заключается в следующем: у меня поверх UIImageView несколько ярлыков.Изображение является формульным, и UILabel s представляет записи.Если я поверну устройство, изображение внутри UIImageView изменится с параметром «Соотношение сторон».Как я могу добиться, чтобы размер UILabel также был изменен и выровнен правильно?Обычные параметры для изменения размера не работают по мере необходимости.UIImageView является масштабируемым с минимальным набором ZoomScale и MaximumZoomScale.

Спасибо.

1 Ответ

1 голос
/ 16 января 2012

Вы можете изменить размер UILabel пропорционально, используя:

label.transform = CGAffineTransformMakeScale(0.5, 0.5);

Вы можете изменить положение UILabel относительно использования:

label.frame = CGRectOffset(label.frame, deltaX, deltaY);

Остальное - математика =)


Итак, мне удалось решить вашу проблему.Полный исходный код здесь .

По сути, я удалил ваш UIImageView и заменил его на UIView.Затем я добавил ваши UILabel в UIView и удалил все авторазмеры из UIView и UILabel в конструкторе интерфейсов.Таким образом, когда UIView будет изменен размер, любой контент в нем также будет изменен / перемещен.

Следующим шагом было изменение класса UIView на UIImageView в конструкторе интерфейса.Теперь из исходного кода я могу установить для него изображение с помощью imgView.image = [UIImage imageNamed:@"imagename.png"];, а также установить режим с помощью imgView.contentMode = UIViewContentModeScaleAspectFit;.

. Преобразование при вращении теперь происходит с:

if (UIDeviceOrientationIsLandscape(deviceOrientation)){

    // Play with the scale if you have any other images with different ratio.
    float scale = 2.3f/3.0f;

    // Transforming the UIImageView containing the UILabels which actually is a simple UIView
    imgView.transform = CGAffineTransformMakeScale(scale, scale);

} else {

    // Original size again
    imgView.transform = CGAffineTransformMakeScale(1, 1);

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