IOS基础之毛毛虫案例-重力

//
//  ViewController.m
//  17-毛毛虫案例-重力
//
//  Created by 鲁军 on 2021/4/17.
//#import "ViewController.h"@interface ViewController ()
@property(nonatomic,strong)UIDynamicAnimator *animator;
@property(nonatomic,strong)UIAttachmentBehavior *attach;
@property(nonatomic,strong)NSMutableArray *bodys;
@end@implementation ViewController#pragma mark: 懒加载
//懒加载。只创建一次  就是单例 只创建一次
- (UIDynamicAnimator *)animator{if(!_animator){_animator  =  [[UIDynamicAnimator alloc] initWithReferenceView:self.view];}return _animator;}- (NSMutableArray *)bodys
{if(!_bodys){_bodys = [NSMutableArray array];}return _bodys;
}- (void)viewDidLoad {[super viewDidLoad];CGFloat w = 30;CGFloat h = 30;CGFloat y = 100;for(int i=0;i<9;++i){UIView * wormView = [[UIView alloc] init];CGFloat x = i * w;wormView.frame = CGRectMake(x, y, w, h);wormView.backgroundColor = [UIColor redColor];wormView.layer.cornerRadius = w *0.5;wormView.layer.masksToBounds = YES;if(i==8){wormView.frame= CGRectMake(x, y-h*0.5, 2*w, 2*h);wormView.backgroundColor = [UIColor blueColor];wormView.layer.cornerRadius = w;//添加一个拖拽手势UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];//2 对某个view 使用这个手势[wormView addGestureRecognizer:pan];}[self.view addSubview:wormView];[self.bodys addObject:wormView];}//附着for(int j=0;j<self.bodys.count-1;++j){UIAttachmentBehavior *attachment = [[UIAttachmentBehavior alloc] initWithItem:self.bodys[j] attachedToItem:self.bodys[j+1]];[self.animator addBehavior:attachment];}UIGravityBehavior * g = [[UIGravityBehavior alloc] initWithItems:self.bodys];[self.animator addBehavior:g];UICollisionBehavior *collision = [[UICollisionBehavior alloc] initWithItems:self.bodys];collision.translatesReferenceBoundsIntoBoundary = YES;[self.animator addBehavior:collision];
}-(void)pan:(UIPanGestureRecognizer *)sender{CGPoint p= [sender locationInView:self.view];//创建动画者对象// 见懒加载//创建附着行为if(!self.attach){UIAttachmentBehavior *attach = [[UIAttachmentBehavior alloc] initWithItem:sender.view attachedToAnchor:p];self.attach = attach;}self.attach.anchorPoint = p;//把行为添加到动画者对象中[self.animator addBehavior:self.attach];//撒手的时候if(sender.state == UIGestureRecognizerStateEnded){[self.animator removeBehavior:self.attach];}
}@end

IOS基础之毛毛虫案例-重力相关推荐

  1. IOS开发基础之画板案例软件的开发

    IOS开发基础之画板案例软件的开发 值此元宵佳节,我依然在学习IOS,几天没有更新博客了.今天更新了一下. 源码在我的主页里面. info.plist里面加入这样的代码,防止截图的时候有问题 < ...

  2. IOS基础之Foundation框架常用类NSFileManager,DSDate,CGPoint,CGSize,copy,单例

    IOS基础之Foundation框架常用类NSFileManager,DSDate,CGPoint,CGSize,copy,单例 1.01_FileManager学习 // // main.m // ...

  3. IOS基础之愤怒的小方块

    IOS基础之愤怒的小方块 // // ViewController.m // 18-愤怒的小方块 // // Created by 鲁军 on 2021/4/17. //#import "V ...

  4. IOS基础之UIDynamicAnimator动力学入门-01

    IOS基础之UIDynamicAnimator动力学入门 01-重力 // // ViewController.m // 01-重力 // // Created by 鲁军 on 2021/4/15. ...

  5. iOS基础——通过案例学知识之UITableView

    iOS基础--通过案例学知识之UITableView 案例一:英雄联盟展示 对于UITableView的知识点特别多,因为它是iOS用得最多控件之一,我会尽我最大努力和语言的组织,将所有知识点介绍到位 ...

  6. iOS基础问答面试题连载-附答案

    2017-02-02 timhbw CocoaChina 以下是一些自己收集的比较基础的问题(大神可以忽略),附上答案,方便大家阅读.俗话说得好,基础不牢,地动山摇.文章末尾会提供PDF版的文档,方便 ...

  7. java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...

    0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...

  8. 图书推荐:《ASP.NET.基础教程——C#案例版》

    本书结合用C#语言编写的可实际运行的示例代码,讨论了ASP.NET的构架.Web窗体.配置.HTTP管道.故障诊断和错误处理.验证.数据绑定.自定义控件.缓存.状态管理和安全性,阐述用C#构建基于We ...

  9. IOS基础之iPad的屏幕旋转方向判断

    IOS基础之iPad的屏幕旋转方向判断 #pragma mark - 屏幕旋转 - (void)viewWillTransitionToSize:(CGSize)size withTransition ...

最新文章

  1. 一起谈.NET技术,.NET Framework源码研究系列之---万法归宗Object
  2. ThreadLocal的使用
  3. 广义的B端产品人,都是什么职位?
  4. 3DSlicer11:体系结构2
  5. spring xml配置文件方式和注解方式的优缺点
  6. 《C++ Primer 第五版》第二章(1-4小节)------基本内置类型,初始化和赋值及声明和定义,指针和引用,const和constexpr
  7. 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换
  8. 我为什么离开德国顶级传统大厂IT部
  9. jsf2.0---jsf的新特性
  10. shell for while循环
  11. Cannot load JDBC driver class 'com.mysql.jdbc.Driver '
  12. Centos7配置 SNMP服务(防火墙配置注意)
  13. 软考初级程序员---题目(一)
  14. 微博营销推广策略分析
  15. Hexo主题制作指南
  16. 体验服和平精英服务器维护,和平精英:体验服申请入口
  17. 微信开放标签wx-open-launch-app
  18. 等保测评(linux)
  19. 辽宁启迪电商:拼多多店铺推广收费标准是什么?
  20. 如何通过一封恶意邮件追踪幕后黑客组织

热门文章

  1. java 更改css_CSS样式更改——文本Content
  2. 计算机网络于20世纪60年代萌芽,计算机网络的发展经过哪几个阶段?
  3. 开发文件服务器,易语言开发文件服务器
  4. matlab 第二类边界条件,第二类边界条件.ppt
  5. 三面求对称二叉树_字节跳动后端实习面经,一面+二面+三面(已收到offer)
  6. 漫画科普:天线的原理?
  7. fpga如何约束走线_如何正确的约束时钟—Vivado优化到关键路径
  8. python 将图片旋转多个角度_【技术】把你的朋友变成表情包?Python:So easy
  9. 10 个实用的 GitHub 插件
  10. VMware中虚拟机与主机不能ping通解决办法