类似bilibili和YY直播,APP效果
![](https://img.haomeiwen.com/i9294/944ec0a7ace9f78e.gif)
基础知识:
iOS屏幕旋转各类集锦(一)
UIViewController实现屏幕旋转
在响应设备旋转时,我们可以通过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.interfaceOrientation和statusBarOrientation方向还是原来的方向。
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
网友评论