900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > ios整理(五)小应用-重力感应

ios整理(五)小应用-重力感应

时间:2018-11-08 03:27:01

相关推荐

ios整理(五)小应用-重力感应

重力感应代码:

#import "ViewController.h"#import <CoreMotion/CoreMotion.h>@interface ViewController ()//创建管理对象 水平仪@property (nonatomic, strong) CMMotionManager *manager;//创建动画对象@property (nonatomic, strong) UIDynamicAnimator *dyanimat;//重力@property (nonatomic, strong) UIGravityBehavior *gravit;//碰撞@property (nonatomic, strong) UICollisionBehavior *collision;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];}#pragma mark - 实例化对象- (CMMotionManager *)manager {if (_manager == nil) {_manager = [[CMMotionManager alloc] init];_manager.deviceMotionUpdateInterval = 0.01;}return _manager;}- (UIDynamicAnimator *)dyanimat {if (_dyanimat == nil) {_dyanimat = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];}return _dyanimat;}- (UIGravityBehavior *)gravit {if (_gravit == nil) {_gravit = [[UIGravityBehavior alloc] init];}return _gravit;}- (UICollisionBehavior *)collision {if (_collision == nil) {_collision = [[UICollisionBehavior alloc] init];_collision.translatesReferenceBoundsIntoBoundary = YES;}return _collision;}#pragma mark - 给对象添加动画- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {//最多可添加50个if (self.view.subviews.count >= 50) {NSLog(@"已到上限");return;}//获取手指的点UITouch *touch = touches.anyObject;CGPoint point = [touch locationInView:self.view];//创建及切圆角UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];view.layer.cornerRadius = 10;view.layer.masksToBounds = YES;//手指的点就是view的中心点view.center = point;//随机颜色view.backgroundColor = [UIColor colorWithRed:arc4random_uniform(255)/255.0 green:arc4random_uniform(255)/255.0 blue:arc4random_uniform(255)/255.0 alpha:1];[self.view addSubview:view];//将对象添加到动画里[self.dyanimat addBehavior:self.gravit];[self.dyanimat addBehavior:self.collision];// 为view添加重力效果[self.gravit addItem:view];// 为view添加碰撞效果[self.collision addItem:view];// 开始监听[self.manager startDeviceMotionUpdatesToQueue:NSOperationQueue.mainQueue withHandler:^(CMDeviceMotion * _Nullable motion, NSError * _Nullable error) {// 设置重力方向self.gravit.gravityDirection = CGVectorMake(motion.gravity.x, -motion.gravity.y);}];//打印添加的控件的个数NSLog(@"%zd - %@", self.view.subviews.count, view);}- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.}@end

下面是模拟器截图,正常情况是真机去测试的,因为水平仪模拟器是没办法测的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。