UIGravityBehavior的简单使用

来源:互联网 发布:零售行业数据分析 编辑:程序博客网 时间:2024/05/16 14:14


#import "ViewController.h"

#import "PushView.h"


@interface ViewController ()


@property (weak, nonatomic) UIImageView * imageView1;


@property (strong,nonatomic) UIDynamicAnimator * animator;


@end


@implementation ViewController


- (void)viewDidLoad {

  

  [superviewDidLoad];

  

  [selfsetupViews];

}

- (void)setupViews{

  

  UIImageView * imageView1 = [[UIImageViewalloc]init];

  imageView1.backgroundColor = [UIColorredColor];

  imageView1.frame = CGRectMake(50, 100, 100, 100);

  imageView1.layer.masksToBounds =YES;

  imageView1.layer.cornerRadius = imageView1.frame.size.width/2;

  imageView1.userInteractionEnabled =YES;

  _imageView1 = imageView1;

  [self.viewaddSubview:imageView1];

}


-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

  

  CGPoint point = [touches.anyObjectlocationInView:self.view];

  self.imageView1.center = point;

  

  [self.animatorremoveAllBehaviors];

  UIGravityBehavior *gravity = [[UIGravityBehavioralloc] initWithItems:@[self.imageView1]];

  

  //默认是1.570796

  NSLog(@"angle %f",gravity.angle);

  

  //默认是1.0

  gravity.magnitude = 10.0;

  

  NSLog(@"magnitude %f",gravity.magnitude);

  //重力的方向默认是(01改变angle 或者magnitude 也能改变这个值

  gravity.gravityDirection = CGVectorMake(0, 1);

  

  [self.animatoraddBehavior:gravity];


  //加一个UICollisionBehavior就不会出现在屏幕外面

  UICollisionBehavior * collision = [[UICollisionBehavioralloc]initWithItems:@[self.imageView1]];

  collision.translatesReferenceBoundsIntoBoundary =YES;

  [self.animatoraddBehavior:collision];

  

}

- (UIDynamicAnimator *)animator{

  

  if (_animator ==nil) {

    _animator = [[UIDynamicAnimatoralloc]initWithReferenceView:self.view];

  }

  return_animator;

  

}

@end


0 0
原创粉丝点击