1

我有一个以编程方式创建的 UIImageView 吗?当我 initWithImage 并将缩放参数设置为 UIViewContentModeScaleToFill 时,它就像一个魅力。我可以整天缩放并随心所欲地创建许多不同的较小“指纹”大小的 UIImageView 版本,但是当我向所述 UIImageView 添加子视图然后尝试缩放快乐的新父级时,子视图无法缩放!我环顾四周,发现我应该将 parentView 的 setAutoresizingSubviews 布尔值启用为 true(我做了),然后调用:

ChildView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;

我也这样做了......现在当我缩放父视图时,孩子也会缩放,但疯狂地疯了一样并且到处都是(不是一个很好的表达方式)但我的观点是我认为孩子会缩放与父母成比例并留在同一个地方(事实并非如此)

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

4

1 回答 1

1

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

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

您要做的是缩放视图的内容。因此,我不会使用针对显示图像进行了优化的 UIImageView,而是创建 UIView 的自定义子类,然后在初始化时,使用以下代码设置视图的转换:

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

然后放入子视图。您可以重新设置变换,子视图将保持相对于彼此相同的位置,但比例不同。

于 2010-05-20T02:07:36.520 回答