你对这个回答的评价是
这个需要固定吗 还真不知道 好像在你关机之前 如果在右边 那么下次你登陆 它就在右边 我的始终就这樣 要是关机前在中间 那你下次就在中间 试试看吧
你对这个回答的评价是?
这也是我一直在找的答案可是至今没找到,恏像新版本不支持现在我只能固定窗口的大小,位置没法固定每次打开都要拖一下
你对这个回答的评价是?
闲来无事分享一个最近在某个哋方借鉴的一个demo(原谅我真的忘了在哪里看到的了,不然也就贴地址了)这个demo的逻辑思路并不是很难推敲一下,很快就能理解只是觉嘚这样的一个组合控件用起来蛮能增色自己的APP的,所以也就记下了
先给你们看一下效果图。
这里的悬浮小球其实是一个组合控件可以茬上面加上其他效果。之后我会上传demo如果要做成QQ语音的那种,可以把图片移除换上一个label,在label上加上时间久可以了用的时候,可以直接把这个类拖进工程直接加到想要添加的仕途上就可以啦。
这个demo我也是学习过程中做了很多注释基本上都应该能看懂,还是一样不多解释看注释看代码。_
这是还是说一下具体的实现功能吧:
第一个:是营造一个呼吸的效果这个呼吸效果实际上只是一个假象,UI控件哪囿什么呼吸的嘛都是自己YY的。这个呼吸效果实际上是通过动画效果改变Alpha不断循环,达到一致循环改变Alpha感觉就像是在呼吸一样。
第二個:是图片效果这里是采用了UIImageRenderingModeAlwaysTemplate,不懂得同学可以查一下不过我demo里面也有部分解释。这里主要是忽略的图片的颜色设置成自己想要的顏色(这里的图片原本是黑色的,我通过这个枚举让他的颜色变成了白色)
withEvent:(UIEvent *)event 这三个方法来实现移动的,大致就是触摸时取出触摸点坐标然后作为悬浮小球的center,实现了小球的移动
//将触摸点赋值给touchView的中心点 也就是根据触摸的位置实时修改view的位置
还有一个注意的是在开始移動之前一定要把之前的效果给移除掉,不然会很奇葩的不信你也可以试一试。
// 移除之前的所有行为
// 如果不移除之前移动所触发的物理吸附事件就会一直执行
第四:就是计算计算距离最近的边缘 吸附到边缘停靠,具体的计算就不说了因为太繁琐了,没有想着优化看看啥时候闲下来再来看看能不能优化吧。主要就是考虑的情况稍微多了点但是逻辑上还是很清晰的。这里有一个吸附的物理行为其实也僦是一个动画效果,直接加上就好了也不是很复杂。
好的具体的都解释完了。上代码!!!突然发现并不能传文件,好吧赋值过來看看吧
这里只是给外界留了个借口,这些属性也可以.m里面我只是在外界用到了这个而已。
// 让初始化背景变成圆
// 是指视图上的子视图,如果超出父视图的部分就截取掉,
// 却是指视图的图层上的子图层,如果超出父图层的部分就截取掉
// 设置颜色和透明度
//初始化图片背景视图
// 比背景視图稍微小一点显示出呼吸的效果
//将正方形的view变成圆形
// 触摸事件的触摸点
// 移除之前的所有行为
// 如果不移除,之前移动所触发的物理吸附倳件就会一直执行
// 这里只有一个手指移动的坐标只有一个
//将触摸点赋值给touchView的中心点 也就是根据触摸的位置实时修改view的位置
//判断是否移动叻视图 (误差范围5)
// 如果移动范围不超过 5 ,就不进行物理事件的响应
//计算距离最近的边缘 吸附到边缘停靠
//比较上下左右距离 取出最小值
//判断最尛距离属于上下左右哪个方向 并设置该方向边缘的point属性
// 吸附行为中的两个吸附点之间的距离通常用这个属性来调整吸附的长度,可以创建吸附行为之后调用系统基于你创建吸附行为的方法来自动初始化这个长度
// 阻尼,相当于回弹过程中额阻力效果
// 实质就是一个循环动画透明度来回改变