我在IB中的xib里面有一个UIView,里面是一个小的80x80正方形的UIScrollview,动态加载了8个左右的80 x 80缩略图。
UIScrollview不会剪切图像,使它们向外延伸,因此您可以向左和向右滑动以将所选图像滚动到中心,分页处于打开状态,因此它们会捕捉每个图像。
我已经研究过,发现这是最好的,也可能是唯一的方法。
UIScrollview位于“容器”UIView中有一个原因,它是接收触摸/滑动并将它们传递给它的孩子UIScrollview,否则所有触摸都必须从小的80x80 UIScrollview区域开始让他们成为沿着一排图像的任何地方。
我已经在某处找到了一些示例代码,但是无法实现它。
将我视为菜鸟,从头到尾,如何在IB中设置UIView和UIScrollview以允许任何触摸传递,以及我应该将哪些代码放入哪里?
UIView设置为scroll_container,子UIScrollview设置为char_scroll
目前我已经完成了所有工作,除了从父母传给孩子的接触,此刻接触必须始终在UIScrollview(中心的80x80小盒子)里面开始,当我想成为能够在长480X80水平父UIView中向左或向右滑动,并让它仍然滚动子UIScrollview。
希望你能帮助并理解我的意思!
答案 0 :(得分:0)
我所有的教诲都说这不是这样做的方式!
即使:
(a)Apple文档说这有用,怎么做;
(b)你可以让hitTest thingummy工作并让UIEvent对象流畅地运行
如果是我,我会期待Apple对操作系统的第一次改变,以破坏代码!
我要做的是:
你需要在你的州建模:
state1:用户在此触摸时请求的(delta x,delta y)位置变化
OR
state2:手指释放后的(delta x,delta y)和(veclocity x,velocity y)和clock()时间,如果图像仍在减速并且没有停下来
state3:图像静止
由此可以计算出动画参数:
初始值:delta-x,delta-y,velocity-x,velocity-y,clock()时间,单位为ms
如果支持弹跳:任何干预转折点
最终:delta-x,delta-y,velocity-x,velocity-y,clock()时间,单位为ms
根据这些动画参数,可以计算一组动画关键帧并将其提供给Core Animation。 (在动画过程中平滑显示自定义减速度需要大量关键帧。)
-
您发现有哪些参考资料可以说明您的建议是最好的方式?
答案 1 :(得分:0)
您可以继承UIScrollView并覆盖-pointInside:withEvent:方法。 UIView的默认实现返回类似CGRectContainsPoint(self.bounds,thePointToTest);.只需测试更广泛的矩形。
答案 2 :(得分:0)
你做这件事的方式主要在那里。我已经尝试将UIView子类化为传递触摸事件,但是我的第一次尝试没有用,我发现了这一点,而不是:How to extend UIScrollView's response area
基本上,子类UIScrollView扩展其hitTest范围。你仍然会包含UIView,但它将是被动的。