2010-05-20 74 views
1

我有一个UIImageView,我创造了正确的?当我initWithImage并设置扩展参数为UIViewContentModeScaleToFill时,就像一个魅力。我可以整天进行缩放,并且可以随意创建许多不同尺寸的较小的'thumbprint'版本的UIImageView,但是当我向所述UIImageView添加子视图并尝试缩放快乐的新父级时,子视图不会缩放!我环顾四周,发现我应使parentView的setAutoresizingSubviews布尔为true(我做到了),然后调用:UIView缩放到指纹,子视图呢?

ChildView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 

这也是我做了......现在,当我缩放家长还可以查看孩子(但不是一个很好的方式),但我的观点是,我认为孩子会按比例缩放到父母身上,并保持在同一个地方(而事实并非如此)

我的问题是如何设置我的代码,以便当我缩放我的父视图1/4或w/e做一个指纹视图的父视图所拥有的子视图将相应地缩放并允许1/4大小的指纹看起来就像全尺寸的视图(只是更小)。

回答

1

要缩放子视图,需要设置视图的仿射变换来缩放内容而不是使用内容模式。

自动调整掩码不用于缩放子视图。相反,它是一个spring-and-struts模型,用于在父视图调整大小时如何定位和调整子视图框架的大小。大多数情况下,当视图从风景自动旋转到纵向时使用它,反之亦然。

你想要做的是缩放视图的内容。因此,而不是使用的UIImageView,它是用于显示图像的优化,我将创建的UIView的定制子类,然后在初始化,设置视图的转换与此代码:

self.transform = CATransform3DMakeScale(zoom, zoom, 1.0f); 

然后把子视图中你可以重新设置变换,并且子视图将保持相对于彼此的相同位置,但是以不同的比例。

+0

非常感谢你的帮助Lucius,我试图让石英库正确编译......我包含了框架并包含了QuartzCore.h,但我仍然得到了“不兼容的类型” 'setTransform'“等等,直到我弄明白了,我无法测试这一点。但我会尽快回到这篇文章 – Parad0x13 2010-05-20 02:51:59

+0

'self.transform'变成[self setTransform:...],所以它确保你发送消息到正确的对象类。 zoom变量应该是一个CGFloat。 – lucius 2010-05-28 03:13:28

+1

它应该是'self.layer.transform = CATransform3DMakeScale(zoom,zoom,1.0f);'对于其他人得到这个错误。 – Moe 2012-12-07 15:46:53