帮朋友做网站 知乎,做雕塑网站找哪家好,电子工程建设网,会做网站怎么赚钱上周一个朋友带的项目出了点问题#xff0c;招的ios开发人员在实现选取相册图片后用九宫格的样式展示时遇到了瓶颈#xff0c;花了将近2周都没有解决。后来在跟我交流的过程中他把项目的图片发给我看了下#xff0c;看完我就笑了#xff0c;这就只是个算法的问题#xff0…上周一个朋友带的项目出了点问题招的ios开发人员在实现选取相册图片后用九宫格的样式展示时遇到了瓶颈花了将近2周都没有解决。后来在跟我交流的过程中他把项目的图片发给我看了下看完我就笑了这就只是个算法的问题花点时间思考下基本就能解决的。废话不多说把之前完成的效果展示出来。以上是直接用手机截的图传上来没想到会这么大。其中图片添加的功能是引入了一个第三方的库非常好用跟qq上的图片添加功能几乎没两样库的名字是ZLPhotoActionSheet。当然这都不是重点重点是怎样去实现九宫格的展示上面的图片中每行是4个这个是我自定义的宏可以任意修改每行的展示数目以及展示的总数目是比较灵活的。这里要说的是算法的核心如果想不到这些也就没法做到自动换行展示了。首先,你得自定义展示的总数目MAXPhotosNO(这里默认是9)每行展示的个数AvgImgsNo(默认为4)在自定义用来展示九宫格的视图类里写一个对象方法-(void)updateTheViewWithImgsArr:(NSArray *)imgsArr;,也就是将获取到的图片数组对象传入这个方法然后再进行处理。然后,就到了最关键的一步了对图图片数组进行处理。先判断数组里元素个数是否等于MAXPhotosNO,这里用于判断是否需要隐藏添加按钮。然后进行for循环处理创建用于承载图片的UIImageView个数为图片数组元素的个数。每次创建之前要知道它是第几行的第几个以此来计算它应该处的位置。设置2个int类型参数(i代表循环的变量)int s i/AvgImgsNo;(确定是第几行0代表第一行以此类推)int r i%AvgImgsNo;(确定是第几个0代表第一个以此类推)接下来就可以计算它的位置了(带space的参数为间距)imgV.frame CGRectMake(ImgSpace*(r1)AvgWidth*r,RowSpace* (s1)AvgWidth*s,AvgWidth,AvgWidth);当然千万别忘了添加按钮的位置也发生了改变同样的2个参数: (因为它始终是最后一个所以直接在后面加1计算就可以了)int k (i1)/AvgImgsNo;int j (i1)%AvgImgsNo;这里要注意:如果数组元素的个数已经达到了设置的MAXPhotosNO的最大值,要这样做处理if((int)imgsArr.countMaxPhotosNo){k MaxPhotosNo/AvgImgsNo; //始终让它处在最后一行的最后一个因为我需要它的方位来布局如果不要的同学可以不用这样写}最后其实已经完成了其中的细节可能还有些但是大体的思路基本就是这个样子非常的简单。我真的有点不明白为啥这样的一个功能2周都写不出来......好吧我们都是站在巨人肩膀上说风凉话的人哈哈~