很抱歉长篇大论。
我正在尝试理解UIScrollView并遇到非常简单的问题。
但是我看到我无论如何都不能平移/滚动视图,而是只要我的手指离开屏幕(触摸结束事件),视图总是要向上滚动。
我没有处理任何接触等 - 我只想了解为什么没有缩放视图留在我滚动的位置?
CGRect viewFrame = self.view.frame ;
viewFrame.size.width *= 1.5;
viewFrame.size.height *= 1.5;
CGSize mySize = viewFrame.size;
[ ((UIScrollView *) self.view) setContentSize: mySize];
self.view.transform = CGAffineTransformMakeScale(1.5, 1.5);
我真正想要实现的是类似于iPad上的数字(相同的代码适用于iPhone):
似乎UIScrollView应该能够处理缩放和平移动作(现在我使用仿射变换来放大订单输入表格和iPad)
由于
答案 0 :(得分:3)
变换视图时,也可以变换其内部坐标系。这意味着如果缩放视图,视图仍然“认为”它与缩放之前的大小相同,因为它的坐标单位也会缩放。
例如,如果您有一个大小为(50,50)的图像视图并且您将其转换为在屏幕上覆盖(200,200),那么当您询问图像视图的大小时,它会报告它的大小大小仍然是(50,50)。
Scrollviews是不同寻常的视图类型,因为他们已了解相对于物理设备屏幕的绝对大小,以便正常工作。当您转换其坐标系时,它们会丢失与物理设备屏幕的连接,并且无法再正常运行。这就是你所看到的。
我还没有这样做,但我很确定在滚动视图中创建缩放的幻觉,你增加了scrollview的框架,然后转换它的子视图(或转换子视图,然后增加框架的scrollview包含新的子视图大小。)这是使scrollview与物理设备屏幕保持同步的唯一方法。