iOS开发——UI篇&九宫格算法

时间:2023-03-08 16:00:43
iOS开发——UI篇&九宫格算法

九宫格算法

关于iOS开发中九宫格的实现虽然使用不多,而且后面会有更好的方实现,但是作为一个程序员必需要知道的就是九宫格算法的实现。

一:实现思路:

  • (1)明确每一块用得是什么view
  • (2)明确每个view之间的父子关系,每个视图都只有一个父视图,拥有很多的子视图。
  • (3)可以先尝试逐个的添加格子,最后考虑使用for循环,完成所有uiview的创建
  • (4)加载app数据,根据数据长度创建对应个数的格子
  • (5)添加格子内部的子控件
  • (6)给内部的子控件装配数据

二:算法的实现

 /*
  * 总列数
  */
 NSUInteger totalloc = ;

 /*
  * View的宽高
  */
 CGFloat shopW = ;
 CGFloat shopH = ;

 /*
  * 每个View之间的间隔
  */
 CGFloat margin = (self.view.frame.size.width - totalloc * shopW) / (totalloc + );

 /*
  * View的总个数
  */
 NSUInteger count = ;

 /*
  *  根据总个数使用总列数来除和取余获取对应的行和列
  */
 NSUInteger loc = count / totalloc;
 NSUInteger row = count % totalloc;

 /*
  * View的X和Y
  */
 CGFloat shopX = margin + (margin + shopW) * row;
 CGFloat shopY = margin + (margin + shopH) * loc;

 /*
  * 创建自定义View,设置背景颜色,添加到界面上去
  */
  UIView *shopV = [[UIView alloc] initWithFrame:CGRectMake(shopX, shopY, shopW, shopH)];
  shopV.backgroundColor = [UIColor lightGrayColor];
  [self.shopView addSubview:shopV];

 /*
  *  创建UIImageView用于放置图片,设置frame然后加到自定义的View上面
  */
  UIImageView *imageV = [[UIImageView alloc] init];
  imageV.frame = CGRectMake(, , , );
  [shopV addSubview:imageV];

 /*
  *  创建UILabel用于放置显示文字,设置frame然后加到自定义的View上面
  */
  UILabel *l = [[UILabel alloc] init];
  l.frame = CGRectMake(, , , );
  l.textAlignment = NSTextAlignmentCenter;
  [shopV addSubview:l];

三:最后实现效果差不多就是这样的

iOS开发——UI篇&九宫格算法

注:在后面的学习中我们会学习使用UICollectionView和ios9新出的特性UIStackView可以非常简单实现九宫格,后面的文章里面我们再见吧!