UIAttachmentBehavior-动画效果:依附,关联

iOS动态UI交互之推拉与附件行为 本文通过两个具体案例深入探讨了UIKit中动态用户界面组件的交互技术。第一个案例展示了如何使用推拉行为(UIPushBehavior)实现视图元素的动态拖放效果,包括角度和力度的计算。第二个案例则着重于附件行为(UIAttachmentBehavior)的运用,介绍了如何实现视图元素之间的动态联动。两个案例都详细说明了实现过程,并提供了相应的代码示例。 阅读详情

1。关联动画项,使其中一个运动后,相关联的对象也随之一起运动

2。初始化

            - (instancetype)initWithItem:(id<UIDynamicItem>)item attachedToAnchor:(CGPoint)point

     - (instancetype)initWithItem:(id<UIDynamicItem>)item offsetFromCenter:(UIOffset)p1 attachedToAnchor:(CGPoint)point


e.g.


- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    
    [self createGestureRecognizer]; //创建拖动
    [self createSmallSquareView];
    [self createAnchorView];  //创建锚点,基准视图,
    [self createAnimatorAndBehaviors];  //创建关联动画    
}

- (void) createSmallSquareView{
    self.squareView = [[UIView alloc] initWithFrame:  CGRectMake(0.0f, 0.0f, 80.0f, 80.0f)];   
    self.squareView.backgroundColor = [UIColor greenColor];
    self.squareView.center = self.view.center;
    
    self.squareViewAnchorView = [[UIView alloc] initWithFrame: CGRectMake(60.0f, 0.0f, 20.0f, 20.0f)];
    self.squareViewAnchorView.backgroundColor = [UIColor brownColor];
    [self.squareView addSubview:self.squareViewAnchorView];
    
    [self.view addSubview:self.squareView];
}
- (void) createAnchorView{
    
    self.anchorView = [[UIView alloc] initWithFrame: CGRectMake(120.0f, 120.0f, 20.0f, 20.0f)];
    self.anchorView.backgroundColor = [UIColor redColor];
    [self.view addSubview:self.anchorView]; 
}
- (void) createGestureRecognizer{
    UIPanGestureRecognizer *panGestureRecognizer =
    [[UIPanGestureRecognizer alloc] initWithTarget:self
                                            action:@selector(handlePan:)];
    [self.view addGestureRecognizer:panGestureRecognizer];
}

- (void) handlePan:(UIPanGestureRecognizer *)paramPan{   //拖动的点作为锚点
    CGPoint tapPoint = [paramPan locationInView:self.view];
    [self.attachmentBehavior setAnchorPoint:tapPoint];
    self.anchorView.center = tapPoint;   
}
- (void) createAnimatorAndBehaviors{
    
    self.animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
    
    /* Create collision detection */
    UICollisionBehavior *collision = [[UICollisionBehavior alloc]
                                      initWithItems:@[self.squareView]];
    collision.translatesReferenceBoundsIntoBoundary = YES;
//    self.attachmentBehavior = [ [UIAttachmentBehavior alloc] initWithItem:self.squareView
//                               attachedToAnchor:self.anchorView.center];
 

//    self.attachmentBehavior = [ [UIAttachmentBehavior alloc] initWithItem:self.squareViewAnchorView
//                               attachedToAnchor:self.anchorView.center];

   

    //squareView视图右上方的点会跟着锚点一起动,带动了squareView整个视图跟着锚点一起动
    UIOffset offset = UIOffsetMake(self.squareViewAnchorView.center.x, self.squareViewAnchorView.center.y);
    self.attachmentBehavior = [[UIAttachmentBehavior alloc] initWithItem:self.squareView
                                                        offsetFromCenter:offset    //偏移
                                                        attachedToAnchor:self.anchorView.center];

    [self.animator addBehavior:collision];
    [self.animator addBehavior:self.attachmentBehavior];
}

    

Python爬虫实战:携程/飞猪酒店信息爬取与动态价格分析 在当今数字化旅游时代,酒店预订平台的复杂筛选条件和动态定价机制为数据分析和价格监控带来了巨大挑战。本文将深入探讨如何使用最新的Python爬虫技术来抓取携程和飞猪平台的酒店信息,处理复杂的筛选条件,并解析动态价格数据。本文详细介绍了如何使用最新的Python爬虫技术来抓取携程和飞猪平台的酒店信息。通过结合httpxplaywrightparsel强大的反反爬虫能力:通过浏览器指纹伪装、请求签名、智能延迟等技术应对各种反爬措施高效的数据解析:使用CSS选择器和XPath精确提取所需信息灵活的数据存储。 阅读详情

相关推荐

阿里云天池大数据长期赛:金融风控-贷款违约预测(含代码)

本次比赛让自己在大数据的处理流程上有了更明确的认知,从数据清洗、特征工程、数据建模,每一个过程都能学到很多经验和知识,值得去历练。

weixin_46685991的博客 1万+

OCiOS开发:UIKit 力学(UIDynamics)(二)

一、前言 在上篇文章中,我们已经了解到了UIDynamic的一些基本概念,本篇博客,我们主要了解一些力学行为特性即物理行为。 UIKit力学行为包含重力(UIGravityBehavior)、碰撞(UICollisionBehavior)、吸附(UIAttachmentBehavior)、推送(UIPushBehavior)、捕捉(UISnapBehavior)和行为限制(UIDynamicItem

李鴻耀 2277

多雷达协同探测技术研究进展:认知跟踪与资源调度算法

源自:雷达学报作者:易伟 袁野 刘光宏 葛建军 孔令讲 杨建宇雷达是信息感知的千里眼,具有极高的军用和民用价值,广泛应用在防空预警、遥感测绘、反恐维稳等领域[1–5]。雷达信息获取与探测技术也一直是大国竞相抢占的前沿技术,同时是信息科学的重要组成部分。随着科学技术不断进步,先进电子对抗装备的不断问世和广泛列装,雷达的生存与发展正面临日益严峻的挑战。从生存环境上看,雷达面临通信等各类民用电磁干扰以及复杂的军用电磁干扰;从探测对象上看,集群、微弱、隐身、高空、低空等多样化目标的出现也给雷达探测与识别带来困难。

renhongxia1的博客 2783

iOS7中UIKit支持的动力行为之UIAttachmentBehavior

UIKit Dynamics可以为UIView指定动力行为,以及让别的对象遵循UIDynamicItem协议,UIKit默认支持5种动力行为:吸附行为(UIAttachmentBehavior)、碰撞行为(UICollisionBehavior)、重力行为(UIGravityBehavior)、推动行为(UIPushBehavior)、捕捉行为(UISnapBehavior)。现翻译官方文档UIAttachmentBehavior,第一次翻译的一篇完整的文章,在翻译的过程中学到的更多,在此记录。

也嘉 3756

AD服务器搭建

一、角色安装1)打开服务器管理器,添加 角色和功能;2) 点 下一步;3)点 下一步;4)点 下一步;5)点击安装;6-1)将此服务器提升为域控制器;6-2)点下一步;6)输入密码 点 下一步;7)自动生成LIXF,点击下一步;8)确认目录,点下一步;8)确认安装条件,点安装; 8)安装成功,点关闭;...

潇峰的博客 6446

ros2 gazebo仿真阿克曼小车搭载livox mid360雷达流程

流程简介:仿真环境的搭建需要安装ROS2和Gazebo。使用的是Humble版本,需要确认是否已经正确安装。然后是阿克曼小车模型的URDF,需要包括底盘、转向机构、驱动轮等,需要参考现有的阿克曼模型,比如ClearPath的Husky,但需要调整参数。Livox Mid360雷达在Gazebo中的仿真可能没有现成的插件,需要使用通用3D LiDAR插件来模拟。IMU的仿真相对简单,但需要注意噪声模型,以接近真实数据。

weixin_43802726的博客 3211

iOS开发 粗解UIDynamicAnimator

文章中部分内容借鉴了 http://beyondvincent.com/2013/06/16/ios7%E6%96%B0%E7%89%B9%E5%BE%81%E6%B1%87%E6%80%BB05%E5%88%9D%E7%AA%A5uikit%E5%8A%A8%E5%8A%9Buikit-dynamics/ UIDynamicAnimator 学习总结 什么是UIKit动力?—— 一句话:U

6021

哨兵1号回波数据(L0级)包格式解析与成像参数提取

提取哨兵1号数据包的辅助数据、回波数据、定标数据。matlab代码在文末

3124

THSpringyCollectionView核心原理:深入理解UIDynamicAnimator与UIAttachmentBehavior

THSpringyCollectionView是一个高效的iOS集合视图实现,它能让单元格像iOS 7消息应用那样弹跳,既节省内存又高效利用CPU。本文将深入解析其核心原理,帮助开发者理解如何利用UIDynamicAnimator和UIAttachmentBehavior创建流畅的弹性动画效果。 ## 弹性动画的魅力:iOS 7消息应用的交互体验 iOS 7引入的消息应用带来了令人耳目一新的交

gitblog_01041的博客 690

026:vue+threeJS 设置地面铺砖的效果

BoxGeometry 是 Three.js 中用于创建立方体或长方体的几何体类。它允许你指定立方体的宽度、高度、深度以及这三个方向上的分段数,从而控制立方体的细分程度。width: 立方体的宽度(沿 x 轴方向)。height: 立方体的高度(沿 y 轴方向)。depth: 立方体的深度(沿 z 轴方向)。widthSegments: 可选参数,指定立方体在 x 轴方向上的分段数,默认值为 1。heightSegments: 可选参数,指定立方体在 y 轴方向上的分段数,默认值为 1。

大剑师兰特的GIS世界 645

【nvidia-B200 生产环境】NVIDIA 570.124.06+Cuda12.8 Ubuntu22.04 nccl-test 一键部署脚本(免修改复制即用)

目录1. 初始化与日志记录2. 安装基础工具与配置更新3. NVIDIA 驱动安装 570.124.064. 安装 Mellanox OFED 24.10-2.1.8.05. 安装 CUDA 12.86. 安装 NCCL 和测试7. 配置 rc.local 和其他优化8. B200 单独步骤9. 最终测试与重启10. 完整生产脚本,复制即可直接使用总结 功能: 设置日志目录和日志文件路径。 使用 命令将标准输出和错误输出同时写入日志文件和终端。 记录脚本开始时间,并计算开始的秒数

jundao1997的专栏 2797

动画系列(一)UIDynamic

概述1.创建一个dynamic动画的对象Item,作为动画的载体,通常可以是一个view或者其他对象,这些view或者对象需要是遵守 UIDynamicItem 协议 //变量-Item和UIDynamicAnimator @property(nonatomic,strong)UIView *animationView; @property(nonatomic,strong) UIDyn

Sophie 412

2026年3月GESP真题及题解(C++七级):物流网络

2026年3月GESP真题及题解(C++七级):物流网络

王老师青少年编程 1124

UIKit Dynamics:抛出视图 —《Graphics & Animation系列三》

翻译自raywenderlich网站iOS教程Graphics & Animation系列 准备开始 首先用storyboard布局一个页面(或者你可以用纯代码去设置),效果如下: 在文件中声明和拖拽出如下参数:(blueSquare、redSquare、imgView是storyboard拖出的) // x:80 y: 420...

weixin_33726318的博客 143

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

iOS力学动画——DynamicAnimate

以dynamicAnimate为首的力学动画是苹果在iOS7加入的API,里面包含了很多力学行为,这套API是基于Box2d实现的。其中包含了重力、碰撞、推、甩、和自定义行为。 涉及到的类如下 涉及类 描述 UIDynamicAnimator 相当于一个manager,用于管理所有添加的力学行为 UIDynamicBehavior

stubbornness1219的博客 654

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

UIKit Dynamic主题学习笔记

1、重力效果:UIGravityBehavior @IBOutlet weak var frogImage: UIImageView! //创建一个关联到view的动画(必须为全局变量) lazy var animator = UIDynamicAnimator(referenceView: self.view) overri...

weixin_30590285的博客 166

CIFilter Transitions & UIKit Dynamics

CIFilter Transitions : CIFilter 转换 Core Image 过滤器包含了转换。你提供两张图片和一个介于0到1的帧时间;过滤器提供一秒内从第一张图片转换到第二张图片的相应帧。例如下图显示了在0.75秒时的帧画面,正在从纯红色的图片通过星光发射转换动画转换到我自己的图片。(你看不到这张我的图片,因为这个转换,默认会先把第一张图片“爆炸”成纯白色,然后迅速消失,...

davidbull1987的博客 228

13、UIKit Dynamics学习

UIKit Dynamics学习 在Core Animation章节中,我们学习如何使核心动画实现对CALayer的动画操作,在学习CAAnimationGroup时,我们用CAKeyFrameAnimation实现了一个抛物线的功能,但最终重力效果并不是十分理想,没有强烈的重力加速度感受。我们通过今天的学习,可以非常简单地实现该功能,并且效果更加逼真。这就是iOS 7中更新的UIKit Dyn

u014395105的专栏 621

iOS核心动画CoreAnimation系统进阶(2D物理引擎)

iOS7前是拟物化,扁平化。iOS7以后交互动画:拟真效果 目前知名的2D物理引擎有 Box2d,和Chipmunk,这些是跨平台的。但苹果本身也封装了一个物理引擎, UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架。这可以让开发人员可以在远离物理学公式的情况下,实现炫酷的物理仿真效果。在游戏开发中会经常用到。本文主要是玩一些较浅的功能,就不说那些游戏中框架中的高级用法...

十二指环的博客 768

UIKit Dynamics:开始入门 —《Graphics & Animation系列一》

翻译自raywenderlich网站iOS教程Graphics & Animation系列介绍UIKit Dynamics是一个集成到UIKit中的完整物理引擎。它允许您通过添加诸如重力,附件(弹簧)和力量等行为来创建感觉真实的界面。您定义了您希望界面元素采用的物理特征,动态引擎负责其余部分。 Motion Effects可以创建...

weixin_34194551的博客 289

iOS中的动力学:Dynamics【1】

iOS7建议我们创建的界面具有物理特性,而不只是像素的集合,可以响应触摸、手势、屏幕方向改变等事件,让用户与界面之间有更深入的交互,而不是像iOS6那样在软件界面上模仿现实世界的纹理而已。或许你会认为创建感觉上真实的界面比创建视觉上真实的界面要难的多。然而通过UIKit Dynamics 和 Motion Effects,这一切将变得非常简单。 • UIKit Dynamics 是

dolacmeng的专栏 1631

腾讯云上部署OpenClaw构建广告营销Agent的实战指南

AI Agent正从概念走向工程实践,其核心价值在于将重复性业务流程自动化,但落地依赖稳定的基础设施与可控的模型调度。OpenClaw作为开源Agent框架,通过Gateway统一入口、Skill技能插件及模型路由机制,提供了从任务编排到工具调用的完整能力。在广告营销场景中,素材生成、投放报表分析与竞品情报均可由Agent驱动,但Token成本与上下文管理是规模化应用的关键约束。本文基于腾讯云CVM环境,梳理OpenClaw的部署选型、模型分级策略及成本优化方法,帮助团队以更低门槛构建企业级Agent服务,

weixin_34289454的博客 340

Swift中的UIKit动力学

重力学这个名词不论在哪个行业领域听起来似乎都很高大上。那么在Swift中的重力学是什么呢?那就是将我们移动端屏幕上毫无生命力的东西也置于万有引力中,使它们能够展现出好像真的由于引力而向下坠落以及碰到物体后自然的弹开的效果。 要想做到这一点,我们得需要两个利器:UIKit Dynamics和Motion Effects。 UIKit Dynamics是UIKit中一套完整的物理引

xiaoyangsavvy的专栏 1251

<iOS 组件与框架> -- UIKit Dynamics

UIKit Dynamics 结合 『iOS 组件与框架 』一书.总结的知识点与demo demo 地址: GitHub地址 一.概述 1.UIKit Dynamics 是 iOS 7 新增的内容.其 目的 就是为了可以让 UIView能够模拟逼真的物理效果. 2.通过使用 UIDynamicItem协议 及 支持它的动态物体(dynamic item),可极大的改善用户体验.现在,给界面添加...

weixin_30824479的博客 258

IOS7开发~UIKit Dynamics

UIKit Dynamics的中文名称:有叫UIKit动力,也有叫UIKit动力模型和UIKit动态或者动态UI,叫什么名不要紧,理解就含义就可以了。 什么是UIKit Dynamics ? UIKit动力提供了一个模拟真实世界中力学相关的动画和交互系统。比如重力、碰撞和吸附等。UIKit动力具有可组合、可重用和声明式的特点。我的理解就是把游戏开发中的物理引擎的搬过来了。 首先简单看几...

weixin_30778805的博客 99
上一篇: UIPushBehavior-动画效果:推移行为
下一篇: UISnapBehavior-动画效果:迅猛移动弹跳摆动
berained
博客等级 码龄20年 14粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值