Вы можете изменить размер 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);
}