iOS开发札记iOS收藏ios

iOS屏幕旋转各类集锦(二)-单页部分旋转

2016-03-18  本文已影响720人  小布走慢点

类似bilibili和YY直播,APP效果

Untitled.gif

基础知识:
iOS屏幕旋转各类集锦(一)

在响应设备旋转时,我们可以通过UIViewController的方法实现更细粒度的控制,当view controller接收到window传来的方向变化的时候,流程如下:
1、首先判断当前viewController是否支持旋转到目标方向,如果支持的话进入流程2,否则此次旋转流程直接结束。
2、调用 willRotateToInterfaceOrientation:duration:
方法,通知view controller将要旋转到目标方向。如果该viewController是一个container view controller的话,它会继续调用其content view controller的该方法。这个时候我们也可以暂时将一些view隐藏掉,等旋转结束以后在现实出来。
3、window调整显示的view controller的bounds,由于view controller的bounds发生变化,将会触发 viewWillLayoutSubviews 方法。这个时候
self.interfaceOrientationstatusBarOrientation方向还是原来的方向。
4、接着当前view controller里的
willAnimateRotationToInterfaceOrientation:duration:
方法将会被调用。系统将会把该方法中执行的所有属性变化放到动animation block中。
5、执行方向旋转的动画。
6、最后调用 didRotateFromInterfaceOrientation:
方法,通知view controller旋转动画执行完毕。这个时候我们可以将第二部隐藏的view再显示出来。

又到道理我都懂,但是咋用呢?

- (void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
        //如果当前是竖屏要完成的事情
    }else {
        //其他情况完成事情
    }
}

iOS屏幕旋转各类集锦(一)-单页旋转
附上demo地址https://github.com/bloodspasm/ScreenRotationDemo2

上一篇下一篇

猜你喜欢

热点阅读