判断屏幕横屏/竖屏

  • 在屏幕发生翻转的时候会调用一些方法:- (void)viewWillLayoutSubviews; / - (void)viewDidLayoutSubviews;以及- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator

  • 注意:这些方法都是在ViewController里面,在view中没有的

方法一:
  • 使用- (void)viewWillLayoutSubviews;方法:
- (void)viewWillLayoutSubviews

{

     [self _shouldRotateToOrientation:(UIDeviceOrientation)[UIApplication sharedApplication].statusBarOrientation]; } -(void)_shouldRotateToOrientation:(UIDeviceOrientation)orientation { if (orientation == UIDeviceOrientationPortrait ||orientation == UIDeviceOrientationPortraitUpsideDown) { // 竖屏 } else { // 横屏 }
方法二:
  • 使用- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator
    • size : 屏幕翻转后的新的尺寸;
    • coordinator : 屏幕翻转过程中的一些信息,比如翻转时间等;
#pragma mark - 屏幕翻转就会调用
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator { // 记录当前是横屏还是竖屏 BOOL isLandscape = size.width == kLandscapeWidth; // 翻转的时间 CGFloat duration = [coordinator transitionDuration]; [UIView animateWithDuration:duration animations:^{ // 1.设置dockview的frame [self.dockView rotateToLandscape:isLandscape]; // 2.屏幕翻转后(设置完dockview的frame)要重新设置contentView的x值 self.contentView.x = self.dockView.width; }]; }
  • 子控件提供了一个方法- (void)rotateToLandscape:(BOOL)isLandscape;根据传入的isLandscape参数即可知道当前的屏幕状态,便于设置子控件在不同屏幕状态下的frame



原文链接:http://www.jianshu.com/p/720ef8571d11
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

转载于:https://www.cnblogs.com/lyy-5518/p/5386004.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值