前言
这两天在学关于屏幕旋转的相关的知识,也延伸出了加速器和陀螺仪这些以前没有深入去学习过的知识点,在没有仔细看之前也有一些问题在想,比如;用户关闭了手机的屏幕旋转,但根据我们的使用经验,APP的界面还是可以旋转的,比如那些视屏播放类型的APP,还是可以全屏观看视频的,那这些是怎么做的?还有比如 你整个项目不允许横屏展示的,而某一个控制器却单独要求横屏展示,这个又该怎么做?用户关闭了手机屏幕旋转,我们还能不能判断手机屏幕的方向?带着这些问题我们一个一个的说一下屏幕方向的那些事儿。
用户关闭了手机屏幕旋转怎么办?
这个我们也就从简单点的说起吧,说个简单的需求,用户把手机屏幕旋转关闭了,我们还有一个播放器界面还是需要横屏显示,我们该怎么办?先说简单的,我们有一个全屏的点击按钮,点击了按钮之后界面横屏。看代码解释,按钮的和点击事件就不写了,直接到重点:
1
2
3
|
// UIInterfaceOrientationLandscapeLeft 向左横置,具体向右或者向左的值自己取出来。
NSNumber
*value = [
NSNumber
numberWithInt:UIInterfaceOrientationLandscapeLeft];
[[UIDevice currentDevice] setValue:value forKey:@
"orientation"
];
|
点击按钮,这个界面就变成了相应横屏的模式!其实这里也会相应的启发到你,那整个APP不允许旋转,唯独这一个界面要能横屏该怎么做?就简单了。这个任务就交给你实践了,要觉得不行,你再给留言或者加我QQ联系我!
CoreMotion.frameWork 主角该登场了!
这个框架就是处理加速器和陀螺仪的东西!先添加到自己的项目里面,导入系统头文件
#import <CoreMotion/CoreMotion.h>
iOS 开发----CMDeviceMotion陀螺仪的使用 iOS学习笔记34 - 加速计和陀螺仪
先把我的学习链接给大家,感谢作者!
至于陀螺仪和加速器是什么,这个我就不再描述了。原理大家可以看上面给的学习链接!说说怎么用它们判断手机屏幕的方向!看代码解释:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
- (
void
)zxMotionManager{
if
(_motionManager ==
nil
) {
_motionManager = [[CMMotionManager alloc] init];
}
if
([_motionManager isGyroAvailable]) {
// deviceMotion 加速器和陀螺仪的复合型数据
_motionManager.deviceMotionUpdateInterval = 0.01f;
[
self
.motionManager startDeviceMotionUpdatesToQueue:[
NSOperationQueue
mainQueue] withHandler:^(CMDeviceMotion * _Nullable motion,
NSError
* _Nullable error) {
[
self
performSelectorOnMainThread:
@selector
(handleDeviceMotion:) withObject:motion waitUntilDone:
YES
];
}];
}
else
{
NSLog
(@
"陀螺仪/加速器不可用"
);
[
self
setMotionManager:
nil
];
}
}
- (
void
)handleDeviceMotion:(CMDeviceMotion *)deviceMotion{
double
x = deviceMotion.gravity.x;
double
y = deviceMotion.gravity.y;
if
(fabs(y) >= fabs(x))
{
if
(y >= 0){
NSLog
(@
"屏幕直立,上下顛倒"
);
}
else
{
NSLog
(@
"屏幕直立"
);
}
}
else
{
if
(x >= 0){
NSLog
(@
"屏幕向右橫置"
);
}
else
{ <br>
NSLog
(@
"屏幕向左横置"
);
}
}
}
|
你在你需要的地方去调用 zxMotionManager 方法就能够判断出手机屏幕的方向,就算是用户关闭了手机旋转按钮!!
http://www.cnblogs.com/taoxu/p/5765066.html
http://www.jianshu.com/p/692e7a490747
本文转自ljianbing51CTO博客,原文链接:http://blog.51cto.com/ljianbing/1860926 ,如需转载请自行联系原作者