CoreMotion 陀螺仪

CoreMotion 陀螺仪

#import <CoreMotion/CoreMotion.h>
@property (nonatomic, strong)CMMotionManager * manager;

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = UIColor.blackColor;
    CMMotionManager *manager = [[CMMotionManager alloc] init];
    self.manager = manager;

    UIView *view2 = [UIView new];
    view2.tag = 2;
    view2.frame = CGRectMake(100, 200, 200, 200);
    view2.backgroundColor = [UIColor systemPinkColor];
    view2.layer.borderWidth = 2.0;
    view2.layer.borderColor = [UIColor blueColor].CGColor;
    [self.view addSubview:view2];
    
    UIView *view3 = [UIView new];
    view3.tag = 2;
    view3.frame = CGRectMake(100, 500, 80, 80);
    view3.backgroundColor = [UIColor yellowColor];
    [self.view addSubview:view3];
    
    [manager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXArbitraryZVertical toQueue:[NSOperationQueue new] withHandler:^(CMDeviceMotion * _Nullable motion, NSError * _Nullable error) {
        CGFloat angle = motion.attitude.yaw;
        CGFloat rollAngle = motion.attitude.roll;
        CGFloat pitchAngle = motion.attitude.pitch;
        CGFloat gx = motion.gravity.x;
        CGFloat gy = motion.gravity.y;

        if (fabs(gx - 1) < 0.3 && fabs(gy) < 0.3) {
                NSLog(@"横屏1");
        } else if (fabs(gx + 1) < 0.3 && fabs(gy) < 0.3) {
                NSLog(@"横屏2");
        }
        
        if ((fabs(gx) < 0.3 && fabs(gy + 1) < 0.3)|| (fabs(gx) < 0.3 && fabs(gy - 1) < 0.3)) {
                NSLog(@"竖屏的两种");
        }
                
        dispatch_async(dispatch_get_main_queue(), ^{
            CATransform3D c1 = CATransform3DMakeRotation(angle, 0, 0, 1);
            CATransform3D c2 = CATransform3DMakeRotation(rollAngle, 0, 1, 0);
            CATransform3D c3 = CATransform3DMakeRotation(pitchAngle, 1, 0, 0);
            view2.layer.transform = CATransform3DConcat(c3, CATransform3DConcat(c1, c2));
            view3.layer.transform = CATransform3DConcat(c1, c2);
        });
    }];
}

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!