在开发中,有时整个项目不支持横屏,但是在某个页面的时候(比如打开地图)我们需要做一些调整。
首先,在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);