iOS开发中,单个页面屏幕旋转问题

在开发中,有时整个项目不支持横屏,但是在某个页面的时候(比如打开地图)我们需要做一些调整。

首先,在iOS的UI控件中有一个transform的属性,这个属性就能帮我解决问题。
比如我们双击某个页面,需要横屏。再次双击,变为之前的竖屏。

    //添加手势
    UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
    tap.numberOfTapsRequired = 2;//双击
    tap.numberOfTouchesRequired = 1;//几个手指

    [self.view addGestureRecognizer:tap];
-(void)tapAction:(UITapGestureRecognizer *)tap{
    static BOOL ishidden = NO;
    ishidden = !ishidden;
    //这个是点击之后隐藏navgationbar,再次点击显示navgationbar。(视情况选择要或者不要)
  [self.navigationController setNavigationBarHidden:ishidden animated:TRUE];
    if (ishidden) {
            //旋转
            self.view.transform=CGAffineTransformRotate(self.view.transform, M_PI_2);
    }else{
        //恢复形变属性
        self.view.transform=CGAffineTransformIdentity;
    }

}

如果感觉不爽,或者地图展示的时候,瞬间变横屏,那么会出现正在加载地图的空白。
建议加一个动画就行了
例如

-(void)tapAction:(UITapGestureRecognizer *)tap{
    static BOOL ishidden = NO;
    ishidden = !ishidden;
    //这个是点击之后隐藏navgationbar,再次点击显示navgationbar。(视情况选择要或者不要)
  [self.navigationController setNavigationBarHidden:ishidden animated:TRUE];
    if (ishidden) {
            //旋转
            [UIView animateWithDuration:0.7 animations:^{
               self.view.transform=CGAffineTransformRotate(self.view.transform, M_PI_2);
             }];
    }else{
        //恢复形变属性
        [UIView animateWithDuration:0.7 animations:^{
           self.view.transform=CGAffineTransformIdentity;
        }];
    }

}

其实transform可以用在UI任何控件中,比如图片,按钮。它的作用也不只是旋转。利用CGAffineTransform能做很多操作。下面说一些苹果帮我们整理好的三个方法。

    UIImageView *imageview=[[UIImageView alloc]init];
    //缩放
    imageview.transform = CGAffineTransformScale(imageview.transform, 0.5, 0.5);
    //旋转
    imageview.transform = CGAffineTransformRotate(imageview.transform, M_PI_2);
    //移动
    imageview.transform = CGAffineTransformTranslate(imageview.transform, 0, 10);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值