我的问题如下: 我在UIImageView
的顶部有一些标签。该图像是一个公式,表示条目。 如果我旋转设备,UIImageView
中的图像会通过选项“方面适合”进行调整。 我怎样才能实现UILabel
也调整大小和对齐正确? 调整大小的正常选项不按需要工作。 UIImageView
可缩放,最小缩放缩放和最大缩放缩放设置。在UIImageView上调整UILabel的正确位置
谢谢。
我的问题如下: 我在UIImageView
的顶部有一些标签。该图像是一个公式,表示条目。 如果我旋转设备,UIImageView
中的图像会通过选项“方面适合”进行调整。 我怎样才能实现UILabel
也调整大小和对齐正确? 调整大小的正常选项不按需要工作。 UIImageView
可缩放,最小缩放缩放和最大缩放缩放设置。在UIImageView上调整UILabel的正确位置
谢谢。
您可以调整一个UILabel
比例使用:
label.transform = CGAffineTransformMakeScale(0.5, 0.5);
可以重新定位一个UILabel
相对使用:
label.frame = CGRectOffset(label.frame, deltaX, deltaY);
剩下的就是数学=)
所以我管理解决你的问题。完整的源代码here。
基本上我删除了你的UIImageView
,并用UIView
代替它。然后,我在UIView
中添加了UILabel
,并从界面构建器中的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);
}
因此,解决办法是对设备旋转和函数中使用两个命令注册? – steffenmauch 2012-01-16 15:18:07
是的。但为了做到这一点,你需要计算新的位置和大小。这是基本的几何。一支钢笔和一张纸是你最好的朋友。 – Dimme 2012-01-16 16:15:01
我可以得到方面适合行动的规模吗? UILabel与UIImageView处于相同的子视图,因此它们在旋转后被调整大小。 如果我停用自动调整大小的问题是,两者的缩放无法按预期方式工作。除了'label.transform'和'label.frame',没有其他可能吗? – steffenmauch 2012-01-16 22:22:03