Iphone 缩放嵌套在UIScrollView中的深度子视图

Iphone 缩放嵌套在UIScrollView中的深度子视图,iphone,ipad,uiview,uiscrollview,uitextfield,Iphone,Ipad,Uiview,Uiscrollview,Uitextfield,这让我头痛得不可名状 我正在尝试为iPad创建一个UML绘图应用程序 我目前拥有将类添加到“画布”的功能。画布只是一个UIView,它位于UIScrollView中 每个类元素都是一个UIView,包含类名、属性和方法(UITextFields)。这些都是画布的子视图 我遇到的问题是,当我使用“收缩/缩放”功能放大类时,我的文本字段变得模糊。据我所知,这是因为UIScrollView只应用了一个变换,我需要自己处理缩放 但是,我能想到的唯一方法是重新绘制类并使它们更大,这可能会扭曲它们相对于彼此

这让我头痛得不可名状

我正在尝试为iPad创建一个UML绘图应用程序

我目前拥有将类添加到“画布”的功能。画布只是一个UIView,它位于UIScrollView中

每个类元素都是一个UIView,包含类名、属性和方法(UITextFields)。这些都是画布的子视图

我遇到的问题是,当我使用“收缩/缩放”功能放大类时,我的文本字段变得模糊。据我所知,这是因为UIScrollView只应用了一个变换,我需要自己处理缩放

但是,我能想到的唯一方法是重新绘制类并使它们更大,这可能会扭曲它们相对于彼此的位置。例如,如果我有两个类并排,一个大小加倍,那么左边的类可能与右边的类重叠


我花了好几个小时寻找解决方案,但一无所获,有人知道可以说明类似我的情况的代码示例或建议吗?或者,如果不是的话,举一个例子,说明如何按照我所描述的方式缩放UITextField(或UILabel)?

根据我的问题的措辞,这可能不是最明显的答案。但我是这样解决问题的:

第一步是实施:

- (void)scrollViewDidEndZooming:(UIScrollView
*)scrollView withView:(UIView *)view atScale:(float)scale;
关键点我似乎遗漏了(不知何故)当UIScrollView被缩放时,它会将其缩放因子重置为1。假设你放大到125%,然后缩小到25%,你实际上看到的是93%的原始视图,而不是100%

如果像我一样,您试图根据子视图的原始大小缩放子视图,这显然会影响您的绘图

最好的方法是跟踪缩放(我使用了变量scaleTracker),然后使用此值缩放视图

更具体地说,针对我的问题,使用了以下代码:

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
{

scaleTracker *= scale;

[canvas setTransform:CGAffineTransformIdentity];

canvas.frame = CGRectMake((int)canvas.original.origin.x,
                              (int)canvas.original.origin.y,
                              (int)(canvas.original.size.width * scaleTracker),
                              (int)(canvas.original.size.height * scaleTracker));
}
祝其他与UIScrollView有问题的人好运。现在,我希望这能为任何有兴趣的人提供一些帮助