Ric*_*man 13 objective-c calayer ios imagefilter snapchat
我试图允许用户在静态图像上的过滤器之间滑动.这个想法是当滤镜在其上方滚动时图像保持原位.Snapchat最近发布了一个实现此功能的版本.这段视频显示了我想要在1:05完成的事情.
到目前为止,我已经尝试将三个UIImageView放入原始图像的左侧和右侧的滚动视图中,并使用scrollView的contentOffset.x调整它们的帧origin.x和size.width.我发现这种想法在另一篇文章在这里.将左侧和右侧的内容模式更改为UIViewContentModeLeft和UIViewContentModeRight没有帮助.
接下来,我尝试将所有三个UIImageView堆叠在一起.我制作了两个CALayer蒙版并将它们插入到堆栈左侧和右侧的scrollView中,因此当您滚动蒙版时,将揭示过滤后的图像.这不适合我.任何帮助将不胜感激.
Wai*_*ain 11
您应该只需要2个图像视图(当前的一个和传入的一个,因为这是一个分页样式滚动),并且它们在每个过滤器更改后切换角色.您使用图层蒙版的方法应该有效,但不能在滚动视图上使用.
因此,请确保您的视图组织类似于:
UIView // receives all gestures
UIScrollView // handles the filter name display, touch disabled
UIImageView // incoming in front, but masked out
UIImageView // current behind
Run Code Online (Sandbox Code Playgroud)
每个图像视图都有一个遮罩层,它只是一个简单的图层,您可以修改遮罩层的位置以更改实际可见的图像数量.
现在,主视图处理平移手势,并使用手势的平移来更改传入图像视图遮罩层位置和滚动视图内容偏移.
当更改完成时,无法再看到"当前"图像视图,并且"传入"图像视图占据整个屏幕."当前"图像视图现在移动到前面并成为incoming视图,其掩模会更新以使其透明.当下一个手势开始时,其图像将更新为下一个过滤器,并且更改过程将重新开始.
当滚动发生时,您始终可以在后台准备过滤后的图像,以便在切换时图像准备好推入视图(用于快速滚动).