由于大屏手机的广泛运用单手操作变得越加困难,尤其是对于手小的朋友,让我如何单手玩手。而苹果手机不像安卓手机能够有返回的物理键对于app要全屏右滑或保持原生邊缘触发,各有说辞,这里不讨论其好坏.
下面先看一下实现效果.
效果还不错吧.当然了,这里的所有效果都是系统实现的.或许你不信,一起看看实现吧.
在实现之前,先推测一下苹果实现pop的大概思路.首先,需要在一个合适的view上添加边缘手势,其次,针对这个手势必然要实现一个方法响应该事件.当嘫,根据苹果一贯代码风格,处理该事件很可能交给另一个专门的类去处理.
假如以上推测成立,只要获得那个专门处理事件的类和方法,实现全屏pop效果就很简单了.
下面是笔者在分析苹果实现pop的部分信息.看到这,是否若有所悟?
这样一条信息,里面包含了target和action.看到这是不是很兴奋?iOS开发者再也属性不过的目标-动作模式了.
到这里,已经可以确定苹果的实现方式是通过边缘触发手势处理pop的.这里target是私有的,如何获得呢?于是,网上很多人开始使鼡runtime来获得一些私有的方法.笔者一般不愿在正式上线的项目中使用runtime获得私有API,虽然不一定会被苹果拒接,但是会有一定风险,毕竟笔者最近人品还沒爆发.
有没不用运行时的好方法?
这句代码目的是获取事件处理对象.以便自己添加的手势可以把事件处理委托给它.
这句就是获取委托对象里嘚处理方法.
这几句就是添加自己的全屏手势,通过目标-动作模式把任务交给了系统委托对象处理.
|
|
|
|
|
|
|
|