在UIImageView上调整UILabel的大小

时间:2012-01-15 22:21:26

标签: ios xcode uiimageview uilabel aspect-ratio

我的问题如下: 我有UIImageView个标签。图像是公式,UILabel表示条目。 如果我旋转设备,UIImageView内的图像会调整大小并选择“纵横比”。 我怎样才能实现UILabel也调整大小并对齐正确? 调整大小的常规选项无法正常工作。 UIImageView可缩放,并设置了最小缩放比例和最大缩放比例。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用以下方式按比例调整UILabel的大小:

label.transform = CGAffineTransformMakeScale(0.5, 0.5);

您可以使用以下方式重新定位UILabel

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

其余的是数学=)


所以我设法解决了你的问题。完整源代码here

基本上我删除了您的UIImageView并将其替换为UIView。然后,我在UILabel中添加了您的UIView,并从界面构建器中的UIViewUILabel中删除了任何自动调整大小。这样,当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);

}