iOS开发 气泡和sheet
Demo 地址
需实现效果:
我们在日常开发中经常会用到这样的气泡控件,以前都是直接在GitHub里面找一个,最近有时间就想着自己写一个。
思路&实现路线1.获取必要参数
首先就是顶部的三角形,它的顶点是在我们点击的中心点的下方,所以要先拿到点击的的,因此我们就需要一个这样的必要参数:,把这个参数写到方法里面,参数:
以上参数需要解释的是,这是之前我的一个大佬同事教我的,目的是使用这个方法来替代,降低因使用而引起循环引用的几率。当然,也并不是适用替换所有的使用的场景,我贴一下,可选择使用。
还有,你点的是谁不重要,重要的是你把谁当做传过来,就以谁为标准来显示。
在方法里面获取到了我们需要的所有必要参数,需要显示的标题数组:,点击的view:。拿到这两个参数我们就可以确定气泡的具体位置了。至于其他的参数都是可有可无,直接给个默认值就行。当然,暴露出来给调用者选择更好。
2.准备画图
拿到数组以后,我们首先要做的要看一下这个数组中最长的字符串的长度是多少。因为我们的这个气泡肯定是要按照最长的长度来画。
于是我选择循环来拿到最大长度,并将两边留出8像素的空白,如果有图片的话,再加上24给图片留位置:
然后确定顶部三角形的高度
拿到的位置
至此,我们拿到了的位置、三角形的高度和的数量,那就可以直接确定气泡的了:
然后在里面添加三角形视图和下面的列表:
然后开始画三角形:
当pointView太过靠边的时候,箭头适当往内侧移动.png
箭头画完了,开始写列表了,我就直接用了一个循环:
全部文件代码
Demo 地址