Hej伙计,
我向你提出了一个问题:我的应用程序中有一个UIScrollView,其中包含许多子视图(UIView的所有直接子类)。现在我想让用户在scrollview中重新排列这些子视图。反正有没有让它看起来像我们所有人都可以改变主屏幕上的图标(自动重新排列)?我真的很感激任何帮助! 提前致谢, 添
答案 0 :(得分:3)
除非你使用一些自定义工具包(我不确定是否存在自定义工具包或API来实现这一点),我认为你应该从头开始创建它们。
我也在创造你说的非常相似的东西。在UIScrollView实例中,我添加了小的子视图,并且只能通过拖动垂直排序。此外,我可以将任何子视图带到UIScrollView实例的外部。 (有点棘手)
有两种方法可以构建它们。 (小的子视图==图标)
1a)在包含许多小子视图的UIScrollView主子视图中实现触摸事件(gestureRecognizer或touchesBegan,Moved,Ended,Cancelled)。
1b)在每个小子视图中实现触摸事件。
我之所以选择1b,是因为我不仅要在UIScrollView中使用小型子视图,还要在程序中的任何位置使用。但是对于1b,在这些小视图中防止多点触控有点困难。我还觉得,对于1b,小型子视图中的触摸事件更容易从应用程序的复杂响应者链中解脱出来。
2)创建一个包含小子视图列表的NSMutableArray实例。
3)实现一个函数,通过枚举它将一个NSMutableArray实例显示在UIScrollView实例的主视图上。
4)实现枚举NSMutableArray实例的函数,并检查小子视图的当前触摸位置是否在NSMutableArray的任何小子视图的帧中。 (或检查当前移动的小子视图的帧是否与任何小子视图的帧相互关联)您可以使用CGGeomtery中的CGRectContainsPoint或CGRectContainsRect函数。
5a)如果是,那么你可以改变NSMutableArray的每个小子视图的框架。
5b)如果用户在任何小子视图的框架外释放手指,则不执行任何操作。
只需使用基于块的动画方法(iOS4及更高版本)或开始/提交动画方法,您就可以像主屏幕一样创建它们。
答案 1 :(得分:1)
使用Pagecontrol的Scrollview非常好的示例,如iphone主屏幕