2012-02-09 65 views
3

我有一个UIScrollView,它显示一个UIView,它本身包含一个小视图层次结构。其中一个子视图用于绘制图标(它们的逻辑含义是PDF页面上的便签标记)。目前,图标与所有其他内容一起放大。但是,无论当前的缩放比例如何,我都想用相同的尺寸绘制它们(当然,它们的正确位置仍然必须保持)。什么是最好的方法来做到这一点?以缩放不变的方式在UIScrollView中绘制图像

+0

您是否尝试过在UIView上使用[autoresizingMask](https://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html)?它的默认值是UIViewAutoresizingNone – 2012-02-09 17:22:08

+0

我没有,但它不是一个简单的解决方案。充其量,我将不得不计算PDF页面的哪个部分在该常量大小的视图中显示,并相应地过滤图标。这是很多工作,所以我希望有一个更简单的解决方案:-) – 2012-02-09 17:35:06

+0

我的复杂解决方案是通知有关任何缩放更改的图标视图,并使其重绘+相应地重新定位自己。 – 2012-02-09 17:38:11

回答

0

您基本上必须单独设置子视图的变换比例以匹配scrollView的缩放因子。所以每当您滚动,通过子视图和循环,如果滚动视图缩放因子,就是说,5.0,你设置的转换是这样的:

CGFloat scaleFactor = 1.0/5.0; // 1.0 divided by the scrollview zoom factor 
subview.transform = CGAffineTransformMakeScale(scaleFactor, scaleFactor); 

从积极的一面,它会被正确中心,因此所有你所要做的就是设置变换,其他的东西都应该可以工作(你不必操纵这个框架)。

+0

不幸的是,它不起作用 - 因为它将变换相对于视图的中心,而不是相对于每个图标的中心。所以它实际上在缩放过程中相对于文本移动图标。 – 2012-02-12 13:47:43

+0

我敢肯定,它将缩放应用于视图的中心 - 您确定将其应用于图标视图而不是容器视图? – 2012-02-12 17:37:16

+0

你是对的,但我在单个视图上绘制所有图标,我没有给出每个图标的单独视图。不过,我想我也可以缩放图标的来源,这应该可以解决问题。现在尝试。 – 2012-02-13 08:29:31