【毛毛虫案例-拖拽 Objective-C语言】

一、这个毛毛虫案例啊,是这个样子的,

通知

1.首先,你这个脑袋,这个蓝色的脑袋,它是可以拽起来的,

通知

下面的红色球,一个一个中心点之间,相互去附着,

其他的红色球,是拖不起来的,

只有这个蓝色的东西,可以拽起来,这个蓝色的View,还有重力,

这个蓝色的View,我在拖动它的时候,不是这个哪一个点的位置去改变,而是我把点击的这个点,和这个脑袋的中间,来了一个刚性附着,

我手指移动的时候,这个蓝色的脑袋,也会跟着去移动,

当我撒手的时候,这个附着,就没有了,

通知

我们还可以多学一个,如何把这个Behavior,去给它删除啊,

也可以让它站到中间啊,

通知

接下来,我们来做一下这个小案例啊,

2.首先,我们新建一个项目,

通知

Name:15-毛毛虫案例

通知

1)首先呢,我这儿有9个UIView,

通知

直接用for循环,去创建,我们先把这个身体啊,先创建出来,

通知

for循环,来9个,

通知

for(int I = 0 ; I < 9 ; I ++ ){

UIView *wormView = [[UIView alloc] init];

}

然后呢,这个wormView的frame,CGRect,需要算一下,

通知

wormView.frame = CGRectMake(CGFloat x,CGFloat y,CGFloat w,CGFloat h);

然后呢,这个,X、Y、宽、高、CGFloat,

CGFloat w = 30;

CGFloat h = 30;

通知

宽、高都是30,先来一个正方形,到时候我们用layer去切一下,就行了,圆角去切啊,

然后呢,X给它来一个,i倍的一个宽度,

CGFloat x = I * w;

通知

然后,Y的话,先给它写一个100,定住,

CGFloat y = 100;

通知

然后,wormView.frame = CGRectMake(x,y,w,h);

都扔进来,

通知

这是设置frame,然后呢,设置一下颜色啊,

wormView. backgroundColor = [UIColor redColor];

通知

接下来,把它添加到控制器,

[self.view addSubview:wormView];// 添加到控制器

通知

把上面几句话的注释写一下,

通知

command + R,

通知

出来了,就成了,

2)第9个View,我们单独设置一下,最后一个的frame不太一样,所以呢,我在这个里边啊,再去给它判断一下,如果你的这个i等于8的时候,也就是你的最后一个View,生成的时候,那么我,

通知

我这个frame,再给它改一下,等于CGRectMake,

wormView.frame = CGRectMake(CGFloat x,CGFloat y,CGFloat w,CGFloat h&#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/34804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[深度学习] 变分自编码器VAE

变分自编码器&#xff08;Variational Autoencoders, VAEs&#xff09;是一种生成模型 Tutorial on Variational Autoencoders&#xff0c;它结合了概率图模型和深度学习&#xff0c;通过学习数据的潜在表示来生成新的数据样本。VAEs在数据生成、异常检测、数据压缩等领域具有广…

如何应对UI测试自动化的不稳定循环!

以下为作者观点&#xff1a; 当我加入UI自动化团队时&#xff0c;我很高兴能为新功能的自动化测试用例开发做出贡献。然而&#xff0c;我很快意识到团队花费了大量时间来修复之前迭代中不稳定的测试。这种情况让我感到困惑&#xff0c;因为当自动化测试脚本已知不稳定时&#…

git使用中 error: pathspec ‘XXX‘ did not match any file(s) known to git 报错解决方法

报错原因 本人在本地开发中&#xff0c;切换线上新创建分支时&#xff1a; $ git checkout master01 error: pathspec master01 did not match any file(s) known to git解决方式 $ git branch -a | grep master * masterremotes/origin/HEAD -> origin/masterremotes/or…

python开发api接口框架

在现代软件开发领域中&#xff0c;API接口框架扮演着非常重要的角色。它可以帮助开发者快速搭建和部署API&#xff0c;提供数据交换的接口&#xff0c;使得不同系统之间可以进行通信和数据传输。Python作为一门功能强大且易于学习的编程语言&#xff0c;被广泛应用于API接口的开…

【Windows 常用工具系列 17 -- windows bat 脚本多参数处理】

请阅读【嵌入式开发学习必备专栏】 文章目录 bat 脚本命令行参数使用示例多参数处理使用示例遍历所有参数 bat 脚本命令行参数 在Windows批处理&#xff08;.bat&#xff09;脚本中接收命令行参数是一个常见的需求&#xff0c;这样的脚本能够根据提供的参数执行不同的操作。命…

Kubernetes之Controller详解

本文尝试从Kubernetes Controller的种类、交互逻辑、最佳实践、伪代码示例及历史演进5个方面对其进行详细阐述&#xff0c;希望对您有所帮助&#xff01; 一、Kubernetes Controller种类 Kubernetes Controller Manager 是 Kubernetes 集群的核心组件之一&#xff0c;负责管理…

身边的故事(十一 ):阿文的故事:红包

虽然是发小&#xff0c;但是小时候的记忆很模糊了&#xff0c;从哪里写起呢&#xff1f;时间节点从大学开始吧&#xff0c;初中的那些有机会后续再写了。 今年回家过年的时候收到阿番要结婚的消息。大年初三阿番就在微信上给我发电子请帖。阿番的女朋友和阿番同居已经有三四年。…

C++ std::array的原理和语法

原理 std::array 是C标准库提供的一个模板类&#xff0c;用于表示固定大小的数组。与传统的C风格数组不同&#xff0c;std::array 提供了更加安全和功能丰富的接口&#xff0c;并且它的大小在编译时就已经确定。std::array 实际上是对传统数组的一个轻量级封装&#xff0c;提供…

无线幅频仪制作(WiFi通信)-含STM32源程序,JAVA上位机与设计报告

资料下载地址&#xff1a;无线幅频仪制作(WiFi通信)-含STM32源程序,JAVA上位机与设计报告 目录 项目功能 1、 系统方案1.1 比较与选择 1.1.1 控制器的论证与选择 1.1.2 信号源的论证与选择 1.1.3 放大器模块的论证与选择 1.1.4 键盘与显示模块的论证与选择 1.1.5 网络通…

[保姆级教程]uniapp小程序获取右上角胶囊位置信息

文章目录 导文使用uni.getMenuButtonBoundingClientRect();方法实现完整案例 隐藏默认导航栏&#xff1a;全局隐藏当前页面隐藏 导文 uniapp小程序获取右上角胶囊位置信息 使用uni.getMenuButtonBoundingClientRect();方法实现 <script>const menuButtonInfo uni.getMe…

logstash配置文件中明文密码加密

1 案例背景 应用配置文件中禁止使用明文密码&#xff0c;需要加密处理 上图中&#xff0c;红框打码位置为es的明文密码&#xff0c;需要对其进行处理 2 创健keystore文件 /rpa/logstash/bin/logstash-keystore --path.settings /rpa/isa/conf/logstash/ create 注&#xff1…

记录正则提取文章

收到了个word版的电子书&#xff0c;需要拆分并转换为md存储到数据库中&#xff0c;便于搜索&#xff0c;记录下用正则提取文章的过程 word原文中有目录&#xff0c;可提取出目录后&#xff0c;在正文中根据目录来正则提取文章 正则的多行匹配 在匹配大量文章的时候&#xff…

互联网时代的语义网知识表示框架---OWL和OWL2 Fragments

文章目录 RDF和RDFSOWL的重要词汇RDF和RDFS 前面介绍了RDF和RDFS,通过RDF (S)可以表示一些简单的语义,但在更复杂的场景下, RDF (S)语义的表达能力显得太弱,还缺少常用的特征: 对于局部值域的属性定义。RDF (S)中通过rdfs:range定义了属性的值域,该值域是全局性的…

llm-universe | 四. 构建RAG应用

构建RAG应用 一.将LLM 接入 LangChain二.构建检索问答链1.加载向量数据库2.创建一个 LLM3.构建检索问答链4.检索问答链效果测试5.添加历史对话的记忆功能5.1 记忆&#xff08;Memory&#xff09;5.2 对话检索链&#xff08;ConversationalRetrievalChain&#xff09; 三. 部署知…

ts可选参数

可选参数 参数后加个问号&#xff0c;代表这个参数是可选的 function bdd(x:number,y?:number){return x y } console.log(bdd(2,3)) function bdd(x:number,y?:number){return x y } console.log(bdd(2))

从0到1构建自己的短链接系统

1. 短链系统简介 1.1 短链系统的定义与用途 短链系统是指将一个较长的URL地址&#xff0c;通过特定的算法生成一个较短的、具备唯一性的URL地址。这种系统广泛应用于社交网络、短信、邮件营销等场景&#xff0c;它能帮助用户在字数受限的情况下分享链接&#xff0c;并且还具有…

Jenkins 创建流水线任务

Jenkins是一个流行的持续集成&#xff08;Continuous Integration&#xff0c;CI&#xff09;工具。 Jenkins 创建任务 选择“流水线”类型&#xff0c;该类型的优点是定制化程度非常高 &#xff08;可选&#xff09;添加“参数化构建” 配置仓库选项(ssh连接、分支)和凭据…

C语言从头学26——函数说明符

一、extern 说明符 我们在阅读C、C底层代码或是MFC代码时&#xff0c;会看经常到 extern 这个符号。对于多文件的项目&#xff0c;源码文件经常会用到其他文件声明的函数。这时&#xff0c;当前文件里面&#xff0c;需要给出外部函数的原型&#xff0c;并用 extern 说明…

上古世纪台服注册账号+下载客户端全方位图文教程

又一款新的MMRPG游戏即将上线啦&#xff0c;游戏名称叫做《上古世纪》游戏采用传统MMO类型游戏的玩法&#xff0c;但是开发商采用了先进的游戏引擎&#xff0c;让玩家们可以享受到极致的视觉体验。同时游戏的背景是建立在大陆分崩离析的基础上。各个部落因为领地的原因纷纷开战…