首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何让我的backgroundImageView成为可拖动的而不是主视图

要让一个backgroundImageView成为可拖动的而不是主视图,可以通过以下步骤实现:

  1. 首先,确保你的backgroundImageView是添加在一个父视图上,而不是直接添加在主视图上。这样可以确保backgroundImageView可以在父视图内进行拖动。
  2. 在代码中,为backgroundImageView添加拖动手势识别器。可以使用UIPanGestureRecognizer来实现拖动功能。例如:
代码语言:txt
复制
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePan(_:)))
backgroundImageView.addGestureRecognizer(panGesture)
  1. 实现拖动手势的处理方法。在这个方法中,你可以获取手势的移动距离,并将backgroundImageView的位置更新为手势的当前位置。例如:
代码语言:txt
复制
@objc func handlePan(_ gesture: UIPanGestureRecognizer) {
    let translation = gesture.translation(in: self.view)
    backgroundImageView.center = CGPoint(x: backgroundImageView.center.x + translation.x, y: backgroundImageView.center.y + translation.y)
    gesture.setTranslation(CGPoint.zero, in: self.view)
}
  1. 确保用户可以交互地拖动backgroundImageView,需要将backgroundImageView的isUserInteractionEnabled属性设置为true。例如:
代码语言:txt
复制
backgroundImageView.isUserInteractionEnabled = true

通过以上步骤,你可以让backgroundImageView成为可拖动的而不是主视图。用户可以通过拖动手势在父视图内自由移动backgroundImageView的位置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何成为有创意的设计师,而不是艺术家?

有时设计做的很好,用户使用时很难发现设计的哪儿不对,因为他们设计的形式你只注意到如何去使用它们,而不是观察他们设计得如何美观。...作为一种文化,我们推崇最美观的设计,却不是更实用的设计。 很容易就能看出,设计师们到底在做什么,总是让人摸不着头脑。...为什么那么多设计师把艺术和设计混为一谈我认为,许多设计师追求艺术而不是设计的部分原因是希望在工作和过程中注入创造力。...设计的创造性并不是为了推动事物而试图突破边界,也不是为了与众不同而改变事物的风格。...许多人可能会认为这些精心设计的产品“缺乏创造力”,但其他人会指出并解释这些相似性如何使设计的对象实现其预期的目标。 研究一再表明,为了改变事物而改变事物是如何损害设计对象的。

49220

我不是修电脑的!新年餐桌上,如何让老妈搞懂自己的“技术”工作

这篇文章里,让我们尝试用最通俗易懂的方式-一家烘培店,向餐桌上的朋友和亲人解释技术相关的基本概念。既然是在餐桌上,身为吃货的我们,就用吃来解释这一切吧! 先来聊聊公司背景 你的公司是一家烘焙店。...1、产品经理 你的任务是弄清楚面包店整体的经营策略,或者某种面包的烘焙策略,比方说烘焙时加什么香料,有什么特色,或者面包店应该提供什么新的东西。 到了开发产品时,你代表客户的声音。...你负责整合顾客反馈并提出新的想法(可能是新口味或全新的糕点种类),为了确保面包房的知名度达到你预期的规模和质量,你需要做出决策。...你不是面包师或厨师的管理者,你只管理面包店的烘焙食物:什么时候发售,推出它的目标是什么,它的目标受众是谁。...你还需要不断给团队提供信息,确保面包店的客源不会流失。 我如何工作? APIs 烤箱上的刻度盘。 Cloud云 一个大型网络烤箱,可以帮助你快速地向世界各地提供商品。

75830
  • 关注数据而不是模型:我是如何赢得吴恩达首届 Data-centric AI 竞赛的

    这次竞赛共有489个参赛个人和团队提交了2458个独特的数据集。仅仅通过改进数据(而不是模型架构,这是硬标准),许多参赛者能够将64.4%的基准性能提高20%以上。...在此,我很高兴能和大家分享我是如何凭借“数据增强(Data Boosting)”技术获得最佳创新奖的。...这场竞赛真正的独特之处在于,与传统的 AI 竞赛不同,它严格关注如何改进数据而不是模型,从我个人的经验来看,这通常是改进人工智能系统的最佳方式。...我最初使用这个电子表格来识别标记错误的图像和明显不是罗马数字 1-10 的图像(例如,在原始训练集中就有一个心脏图像)。 现在我们来看看“数据增强”技术。...v=FnFksQo-yEY&t=1316s 当我最初考虑这种“数据增强”的方法时,我需要弄清楚如何自动生成大量新的候选图像作为来源。我决定尝试随机增强原始训练数据,以生成大量增强图像作为候选来源。

    68340

    我如何每次运行程序时,都会将数据添加到对应的keys中,而不是重新创建一个dict啊?

    大家好,我是Python进阶者。...一、前言 前几天在Python最强王者交流群【 】问了一个Python项目实战的问题,问题如下:请问,我如何每次运行程序时,都会将数据添加到对应的keys中,而不是重新创建一个dict啊。...如果你也有类似这种Python相关的小问题,欢迎随时来交流群学习交流哦,有问必答! 三、总结 大家好,我是Python进阶者。...这篇文章主要盘点了一个Python项目实战的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。...最后感谢粉丝【 】提出的问题,感谢【东哥】给出的思路,感谢【莫生气】等人参与学习交流。

    11010

    React Native 新架构是如何工作的?

    但是,React Native 渲染的是通用平台视图(宿主视图)而不是 DOM 节点(可以认为 DOM 是 Web 的宿主视图)。Fabric 渲染器使得渲染宿主视图变得可行。...(译注:后面线程模型有解释) React 元素树和元素树中的元素并不是一直存在的,它只一个当前视图的描述,而最终是由 React “fiber” 来实现的。...为了更新任意的 React 影子节点,渲染器会创建了一棵新的 React 影子树。为了让状态更新更高效,渲染器提供了 clone 操作。更多细节可参考后面的 React 状态更新部分。...虽然,这种优化让渲染器少创建和渲染两个宿主视图,但从用户的角度看屏幕内容没有任何区别。...这意味着,在渲染器中 React 的每次更新都会重新创建或复制新对象,而不是更新原有的数据结构。这是框架把线程安全和同步 API 暴露给 React 的前提。

    2.8K10

    android画图之贝塞尔曲线讲解

    首先对于《赛贝尔曲线》不是很了解的童鞋,请自觉白度百科、google等等......,一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋; 上面这一段话其实就“线段像可伸缩的皮筋”这一句比较重要,也很容易理解;         至于贝赛尔曲线的实现...; 熟悉方法后,下面就来实现: SurfaceView框架不多讲,看过我博客的都应该知道的; 直接看MySurfaceView类,此类继承SurfaceView ,是游戏的主视图 这里为了更清晰的讲解:...这里我简单的统一的讲操作点设置成用户触屏点的x,y的一半,呵呵偷懒了~嘻嘻~ 我把贝赛尔的操作点写在了逻辑logic()函数中,不断的执行,并且每次利用nextInt函数得到随机的操作点,主要为了让其曲线不断的变化从而形成一个震动的曲线运动轨迹...这里可能由于图片是静止的效果看起来不是很明显,大家可以运行源码来观察 ,好了~本节就这样吧;下面贴出整个MySurfaceView的源码:(最后有本项目的源码下载地址) package com.qpath

    1.2K70

    使用 IOC 控制反转和 DI 依赖注入的意义

    我通过问问题的方式让小伙伴了解这么做的意义 在开始之前我就可以告诉小伙伴使用容器注入的缺点了,尽管这很有争议 内存泄漏 降低性能 那是否 IOC 控制反转意味着一定需要配合 DI 依赖注入?...,而具体的编辑模式和播放模式等都有继承这个接口的实现 interface 拖动业务接口 { } class 编辑模式下的拖动业务 : 拖动业务接口 { } class 播放模式下的拖动业务 :...,但我又给你挖一个坑 产品大佬说,我还要做一个叫 图片元素 的业务,这个 图片元素 也是需要有和形状一样的拖动业务的 有趣不,如果用解决形状元素的问题来解决图片元素的问题,那么是不是咱需要创建一个叫 图片元素工厂...随着咱不断复杂的业务逻辑,如何拆分才能降低耦合?如何更好利用面向对象的多态?...更工程化的问题还包含了如何可以让业务更好的支持自动化测试 如上面的代码,我期望在单元测试的时候支持测试元素在拖动的业务,我期望传入一个虚拟的拖动业务逻辑以进行无 UI 和交互的自动化测试,能不能做到?

    92110

    iOS透明导航栏的平滑过渡(进阶版)引实现过程结

    而很多App的做法其实比较粗糙,类似于我在传送门:iOS导航栏切换界面时隐藏和显示中的做法,需要导航栏透明时,直接将导航栏隐藏起来。...这两个矛盾没有想到可以调和的手段,除非在业务上就不显示Tabbar了,但始终不是长久之计。...设置导航栏背景透明度 导航栏上应该是有很多view的,我们要做的是只让背景透明,而保留标题、返回按钮。iOS没有直接给我们提供对于导航栏背景view的访问途径,那么我们只能自己来找了。...,包括返回按钮,因为我没有给导航栏添加任何其他按钮,所以这里一定是返回按钮,下属的 UILabel 就是 “返回” 两个字了。...= nil && backgroundImageView.image !

    3.1K40

    -StatefulWidget的打开方式

    =20;`时会报错 这真是让人不爽,对象更改属性不是天经地义吗?...,让我们感觉里面的人是活的,世界是运动的 这其中化腐朽为神奇的关键就是如何持续渲染,就像电影如何连续一帧帧的播放 这时状态类中的setState()应声而出,交给我,只要喊我一声,我就为你们更新状态...之后渐渐发现面向对象的魅力,我不知你们对万物皆对象如何理解,这里说一下我的看法: 万物皆对象并不是站在人类的角度说世间的实体都是对象,而是站在另一个维度 一个应用便是一个小世界,里面有众多对象相互协调合作...三个词: 易复用、好维护、可拓展 这三个词会伴随Coder的编程生涯,如何让自己创造的世界更好的运作,是我们殚精竭虑的 从设计模式到数据结构,从编码到重构,我们努力调整维持这个世界的秩序,让它们脱离...直到现在Flutter出现了,它带着React的风采出现在移动端,甚至全端 Flutter中对于界面感觉非常友好,虽然刚来时一堆括号的嵌套让人难以适应,但渐渐你会发现他的美 Widget认为界面上的元素都成为组件

    1.1K10

    Android入门基础教程(小白速成1)

    大家好,又见面了,我是你们的朋友全栈君。...项目新建按照需求来就好,我这里选用空的界面(Empty Activity)和Android 4.0.3,大家一定要注意安卓版本匹配问题鸭,之前每次新建项目都报错,最后才发现是版本匹配问题。...新建好项目以后,我们首先认识几个主要用到的界面。 MainActivity.java页面,这个页面相当于我们的主视图。 res文件夹是资源文件的配置文件。...开始添加组件 我们添加组件的操作是在activity_main.xml上通过拖动完成的 最左下角的design视图里,我们能通过拖动左边的组件,放在右边的界面上。...而拖动后可能会报错,如下图 只需要在右侧布局中点击组件周围的加号,给它固定位置即可 点击按钮响应 我们可以向页面中拖入button,自然需要点击按钮时还有一定的响应。

    1.1K20

    IOS开发之绝对布局和相对布局(屏幕适配)

    而相对定位则不同,相对定位是参考组件周围的元素来确定组件的大小或位置,相对定位即约束和周围组件的距离来布局的,即layoutConstraint....我们如何让在3.5寸屏上也显示正常呢,接下啦就是相对布局出出场的时候了,我们用相对布局的方式把最下面的view的位置改为相对于主视图的底部和左边的像素值固定,同时设置slider的位置相对于下面的view...那么我如何用相对布局实现上面那种view放大的效果呢,接下来我们需要新建一个工程,因为相对布局和绝对布局在同一个组件中无法并存。...绝对布局直接改frame的坐标值就可以啦,那么在程序中我们如何去动态的改变我们约束的值呢?下面的代码将会用到。...)sliderChange:(id)sender {     //为了避免冲突移除myView的水平和垂直约束,注意是从主视图上移除,因为约束是加载我们的主视图上,即相对于我们的主视图     [self.view

    2.3K60

    再见,干净的代码

    我的同事刚刚提交了他们整个星期一直在编写的代码。我们正在开发一个图形编辑器画布,他们实现了通过拖动边缘的小手柄来调整矩形和椭圆等形状的大小。 代码运行正常。 但它是重复的。...如果我们想要改变特定方向或形状的行为,我们可以在一个地方完成,而不是到处更新方法。 已经很晚了(我太过分了)。我将我的重构提交到主分支并上床睡觉,为自己整理同事混乱代码的能力感到骄傲。...一旦我们学会了如何创建抽象,就很容易因为这种能力而陷入沉迷,并且在看到重复的代码时随意地创造出抽象。编程几年后,我们会发现重复无处不在——而抽象成为了我们的新超能力。...我的抽象化将变得更加复杂数倍才能应对这些情况,而原始的“混乱”版本则可以轻松地进行此类更改。 我是说你应该写“肮脏”的代码吗?不是的。我建议你深入思考当你说“干净”或者“肮脏”时,你到底意味着什么。...不要成为一个痴迷于清洁代码的人。清洁代码并非目标,而是试图从我们所处理的庞大复杂系统中找出一些意义的尝试。当你还不确定某个变化会如何影响代码库时,它是一种防御机制,帮助你在未知领域中寻求指导。

    7210

    Demoo使用秘籍,比好用更好用 - 腾讯ISUX

    涉及技巧:图片排序 Demoo支持我们对图片进行拖动排序整理,在标题栏区域鼠标停留,即可发现鼠标指针变为十字型,此时可拖动页面。...设置页面滑动手势 涉及技巧:双击手势区域,快速设置手势热点 大屏幕手机越来越泛滥的时候,手势滑动成为一个很常见的操作,Demoo也可以模拟手势操作哦!...如图示,我将点歌台呼起的页面出现形式,设定为从下往上出。如果不是很确定切换效果,Demoo很细心的在这里设计了动画预览,鼠标停留在小方块上时,会有微动画示意,多看几遍也就明白了。 ?...有一个技巧是,可以将原型添加到桌面,且只要设置好,Demoo可以做到app的图标和闪屏完整模拟,让你体验从手机桌面打开app的真实感!...最后,听说很多试用过的朋友都在询问,如何在Demoo中模拟浮层的效果,Demoo其实更擅长的是页面之间的跳转,那么如何模拟呢?这里给大家一个小技巧。

    1.6K40

    闭包是个好东西,巧用闭包实现数据绑定

    你可以将闭包作为一个函数的参数,也可以将它作为函数的返回值。 以上就是我在网上搜到的关于闭包的解释,按我的理解,闭包就是一个可执行的代码块,可用作参数传入。...首先,为了能让 ViewModel 和 View 之间能形成绑定,我们需要提供一种简单的机制让 ViewModel 中的数据源与 View 中的控件绑定在一起。...; 案例实践 在本次的演示中,我拿了之前的一个项目代码做参考,此项目也是我之前写的一篇文章 “iOS 优雅的处理网络数据,你真的会吗?...不如看看这篇” 调研写的代码。 简单的描述一下需求:我们需要将在 ViewModel 中通过网络异步获取到图片数据并返回给主视图里的 TableView, 并将数据加载出来。...reason: String) { indicatorView.stopAnimating() tableView.reloadData() } } 但是现在我觉得这并不是很优雅

    49810

    把大象P转身只需拖动鼠标,华人一作DragGAN爆火

    机器之心报道 编辑:蛋酱、小舟 如果甲方想把大象 P 转身,你只需要拖动 GAN 就好了。 在图像生成领域,以 Stable Diffusion 为代表的扩散模型已然成为当前占据主导地位的范式。...例如,让狮子「转头」并「开口」: 还能轻松让小猫 wink: 再比如,你可以通过拖动操纵点,让单手插兜的模特把手拿出来、改变站立姿势、短袖改长袖。...也有人觉得,这个方法也可能会成为未来 PS 的一部分。 总之,观感就是一句话:「看到这个,我脑袋都炸了。」...与传统的形变方法不同的是,本文的变形是在 GAN 学习的图像流形上进行的,它倾向于遵从底层的目标结构,而不是简单地应用扭曲。...可以看出,性能对_1 的选择不是很敏感,而_1=3 的性能略好。 讨论 掩码的影响。

    65820

    把大象P转身只需拖动鼠标,DragGAN爆火

    最近,来自马克斯・普朗克计算机科学研究所、MIT CSAIL 和谷歌的研究者们研究了一种控制 GAN 的新方法 DragGAN,能够让用户以交互的方式「拖动」图像的任何点精确到达目标点。...例如,让狮子「转头」并「开口」: 还能轻松让小猫 wink: 再比如,你可以通过拖动操纵点,让单手插兜的模特把手拿出来、改变站立姿势、短袖改长袖。...也有人觉得,这个方法也可能会成为未来 PS 的一部分。 总之,观感就是一句话:「看到这个,我脑袋都炸了。」...与传统的形变方法不同的是,本文的变形是在 GAN 学习的图像流形上进行的,它倾向于遵从底层的目标结构,而不是简单地应用扭曲。...可以看出,性能对_1 的选择不是很敏感,而_1=3 的性能略好。 讨论 掩码的影响。

    29430
    领券