UINavigationController的滑动返回作为iOS7的新特性被引入,但是只有在滑动视图的左边缘的时,才可以体验这样的交互。如果,想要滑动视图的任意位置,想要体验这样的交互,就需要自己动手处理了,后者使用第三方库。
另外,最近的程序中遇到这样的一个问题:push到一个钱包界面,这个界面请求钱包的内容。这个界面比较敏感,涉及钱财,采取了一些安全措施。其中的一个就是客户端距离上次请求验证的接口超过有效时间,就会要求用户再次登陆。那么对于这里,就是在进入钱包界面的时候,请求数据,服务器端如果认为登陆状态失效了,就需要引导用户再次登陆。如果用户不愿意登陆,点击返回到钱包界面,因为用户没有再次登陆,为了安全起见,需要立刻跳转到钱包的前一个界面。如此来回快速的push和pop很容易引起crash,(如can't add self as subview等问题)。
关于这个滑动返回还要涉及的一个问题就是navigationbar的颜色更改和隐藏与否。如果不能很好处理navigationbar的颜色更改,就有可能出现navigationbar的颜色是现在的颜色和下一个颜色的过渡色;当前界面不隐藏navigationbar,下一个界面隐藏,如果不能很好处理,就有可能出现下个界面因为要处理navigationbar而引起界面的跳动。
观察了一些已有的app的,有些处理的很好,于是,就想尝试自己写一个。
两个navigationbar的颜色不同,滑动返回也不会 滑动返回中,上一个navigationbar上的文本与
导致两个navigationbar串色。 当前的重叠。
1.分析滑动返回:
滑动是一个手势。滑动返回是利用手势来控制当前视图的移动,另外,上一个界面也会因为当前界面右移而右移显示出来。这里需要用到截屏,也就是说上一个界面其实是截取的一个“图片”。
2.分析连续的pop和push:
连续的pop和push之所以会引起问题,是因为动画需要时间,在动画没有结束之前,来回返回push和pop就会引起异常,解决的方式是在一个UIViewController或者其子类的viewDidAppear方法里面进行push和pop操作,也就是说要视图完全呈现出来,动画完全结束后,再进行操作。
解决方法: