一个九宫格很简单的代码实现,不靠UICollectionView。 搞这个东西,一开始也是想这拖控件,但刚学oc开发,控件还是不熟,也时候storyboard上拖出来对的,代码实现又出问题了。丢掉控件思维,算法实现还是蛮简单的。
1 #define IMAGEWIDTH 50 //定义图片宽度 2 #define IMAGEHEIGHT 50 //定义图片高度 3 ....................... 4 _itemsCount = 10; 5 ....................... 6 ....................... //此处省略其他无关代码 7 ....................... 8 9 - (void)imageBlock : (int)columns isAddView:(BOOL)add{ 10 //定义第一张图片的起始X值,由参数columns(列数)来判断 11 float startX = (self.view.frame.size.width - IMAGEWIDTH * columns) / (columns + 1); 12 //定义起始Y值 13 float startY = 100; 14 15 //_itemsCount定义在类的成员变量里,也可以作参数传入 16 for (int i=0;i<_itemsCount;i++){ 17 //判断第 i 个元素所在的行号和列号 18 int row = i / columns; 19 int col = i % columns; 20 //计算出该行该列的X,Y起始值 21 float x = startX + col * (IMAGEWIDTH+startX); 22 float y = startY + row * (IMAGEHEIGHT+startX); 23 //如果add==YES,则动态添加图片 24 if(add){ 25 [self addImage:x y:y insertToLast:NO]; 26 } else { //否则,就动态调整他们的位置 27 UIView *view = self.view.subviews[i+2]; 28 view.frame = CGRectMake(x, y, IMAGEWIDTH, IMAGEHEIGHT); 29 } 30 } 31 } 32 33 //外面可以再嵌套 [UIView beginAnimation]方法来实现动画效果
效果如图:
4列样式
5列样式
GIF