#import <UIKit/UIKit.h>
#import <CoreMotion/CoreMotion.h>
//#import "NSString+Extension.h"
@interface ViewController : UIViewController
@property(nonatomic,strong)CMMotionManager *motionManager;
@end
判斷是否旋轉
給大家一個提示:commitAnimations記得在動畫結束之后一定要commit,因為這個錯誤導致整個程序都錯了,找了半天。
@implementation ViewController{
CameraIconView *xiangCeIcon;
CameraIconView *piaoJiaIcon;
UILabel *directionPromptLabel1;
UILabel *directionPromptLabel2;
}
- (void)viewDidLoad {
[super viewDidLoad];
[self startMotionManager];
}
-(void)startMotionManager{
if (_motionManager == nil) {
_motionManager = [[CMMotionManager alloc]init];
}
_motionManager.accelerometerUpdateInterval = 0.3;
if (_motionManager.deviceMotionAvailable) {
NSLog(@"Device Motion Available");
[_motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue]
withHandler: ^(CMDeviceMotion *motion, NSError *error){
[self performSelectorOnMainThread:@selector(handleDeviceMotion:) withObject:motion waitUntilDone:YES];
}];
} else {
NSLog(@"No device motion on device.");
[self setMotionManager:nil];
}
}
-(void)handleDeviceMotion:(CMDeviceMotion *)deviceMotion{
double x = deviceMotion.gravity.x;
double y = deviceMotion.gravity.y;
if (fabs(y) >= fabs(x))
{
NSLog(@"豎屏");
if (y >= 0){
// UIDeviceOrientationPortraitUpsideDown;home鍵在上
[self fanzhuan:M_PI];
directionPromptLabel1.hidden = YES;
directionPromptLabel2.hidden = NO;
}
else{
// UIDeviceOrientationPortrait;home鍵在下
[self fanzhuan:M_PI *2];
directionPromptLabel1.hidden = NO;
directionPromptLabel2.hidden = YES;
}
}
else
{
NSLog(@"橫屏");
if (x >= 0){
// UIDeviceOrientationLandscapeRight;//home鍵在右
[self fanzhuan:-M_PI/2];
}
else{
// UIDeviceOrientationLandscapeLeft;//home鍵在左
[self fanzhuan:M_PI/2];
}
directionPromptLabel1.hidden = YES;
directionPromptLabel2.hidden = NO;
}
}
-(void)fanzhuan:(CGFloat)angle{
[CameraIconView beginAnimations:nil context:nil];
[CameraIconView setAnimationDuration:0.5];
CGAffineTransform transform = CGAffineTransformMakeRotation(angle);
[_PhotoButton setTransform:transform];
[xiangCeIcon setTransform:transform ];
[piaoJiaIcon setTransform:transform ];
[CameraIconView commitAnimations];
}
退出的時候關閉調用
-(void)viewDidDisappear:(BOOL)animated{
[_motionManager stopDeviceMotionUpdates];
}