家庭作业1 - 9宫格列数变换效果

一个九宫格很简单的代码实现,不靠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列样式

Segmented 4columns

5列样式

Segmented 5columns

GIF

Segmented

posted @ 2014-02-09 23:28  罗哥.ios  阅读(425)  评论(0编辑  收藏  举报