2012-01-15 32 views
2

我的问题如下: 我在UIImageView的顶部有一些标签。该图像是一个公式,表示条目。 如果我旋转设备,UIImageView中的图像会通过选项“方面适合”进行调整。 我怎样才能实现UILabel也调整大小和对齐正确? 调整大小的正常选项不按需要工作。 UIImageView可缩放,最小缩放缩放和最大缩放缩放设置。在UIImageView上调整UILabel的正确位置

谢谢。

回答

1

您可以调整一个UILabel比例使用:

label.transform = CGAffineTransformMakeScale(0.5, 0.5); 

可以重新定位一个UILabel相对使用:

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

剩下的就是数学=)


所以我管理解决你的问题。完整的源代码here

基本上我删除了你的UIImageView,并用UIView代替它。然后,我在UIView中添加了UILabel,并从界面构建器中的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); 

} 
+0

因此,解决办法是对设备旋转和函数中使用两个命令注册? – steffenmauch 2012-01-16 15:18:07

+0

是的。但为了做到这一点,你需要计算新的位置和大小。这是基本的几何。一支钢笔和一张纸是你最好的朋友。 – Dimme 2012-01-16 16:15:01

+0

我可以得到方面适合行动的规模吗? UILabel与UIImageView处于相同的子视图,因此它们在旋转后被调整大小。 如果我停用自动调整大小的问题是,两者的缩放无法按预期方式工作。除了'label.transform'和'label.frame',没有其他可能吗? – steffenmauch 2012-01-16 22:22:03