(7)、九宫格计算-冯金伟博客园

使有九宫格方法计算位置来解决这个问题:

(7)、九宫格计算-冯金伟博客园

(7)、九宫格计算-冯金伟博客园

只计算出一个X值的效果图如下:

(7)、九宫格计算-冯金伟博客园

处在同一列的控件的x值相同,处在同一行控件的y值相同

 (7)、九宫格计算-冯金伟博客园

只需要算出它们的行号和列号就能知道他们的位置

(7)、九宫格计算-冯金伟博客园

(7)、九宫格计算-冯金伟博客园

这样设置后发现狂点后,添加的控件会超出白色视图

解决方法可以使用裁剪方法:

(7)、九宫格计算-冯金伟博客园

虽然用了裁剪,但用调试工具还可以看得见

(7)、九宫格计算-冯金伟博客园

接着做添加不同的商品,要做出如下效果:

 (7)、九宫格计算-冯金伟博客园

通过数据的存取,来获取不同的数据

(7)、九宫格计算-冯金伟博客园

(7)、九宫格计算-冯金伟博客园

效果图如下:

 (7)、九宫格计算-冯金伟博客园

(7)、九宫格计算-冯金伟博客园

使有文档注释的好处:使用文档注释,然后在使用它的时候在提示中会提示出添加的注释:

 (7)、九宫格计算-冯金伟博客园

只添加6个数据,当点击添加按钮到六个的时候,再次添加时就会出现闪退,解决这个问题的方法如下:就得在操作添加和删除按钮的时候进行控制:

声明添加按钮属性:

 (7)、九宫格计算-冯金伟博客园

在创建的时候直接将返回UIButton类型的对象赋值给添加按钮和删除按钮:

(7)、九宫格计算-冯金伟博客园

(7)、九宫格计算-冯金伟博客园

然后在add添加方法中进行设置:

(7)、九宫格计算-冯金伟博客园

效果图如下:

 (7)、九宫格计算-冯金伟博客园

设置在程序加载视图完毕后就先禁用删除按钮:

(7)、九宫格计算-冯金伟博客园

(7)、九宫格计算-冯金伟博客园

删除按钮方法:

(7)、九宫格计算-冯金伟博客园

完整的代码如下:

(7)、九宫格计算-冯金伟博客园

(7)、九宫格计算-冯金伟博客园

(7)、九宫格计算-冯金伟博客园

(7)、九宫格计算-冯金伟博客园

(7)、九宫格计算-冯金伟博客园

(7)、九宫格计算-冯金伟博客园

(7)、九宫格计算-冯金伟博客园

这样就实现了当白色视图中有控件时,删除按钮就可用,当没有时就删除按钮就不可用,当白色按钮里的控件数量小于数组中的数量时,添加按钮就可用,当等于时添加按钮就不可用。

(7)、九宫格计算-冯金伟博客园

(7)、九宫格计算-冯金伟博客园

接下来做显示指示器,当添加满了的时候和删除完了的时候做个提示显示:

通常把显示器称为:HUD指示器、蒙板、遮盖

设置storyboard中控件的名称,方便识别,如下操作:

(7)、九宫格计算-冯金伟博客园

隐藏label控件的三种方法

 (7)、九宫格计算-冯金伟博客园

可以设置隐藏属性,透明度或直接将它删除

以上设置代码的效果相应于storyBoard中的如下设置

(7)、九宫格计算-冯金伟博客园

如果要在storyboard中改变label到白色视图的中间位置,不要直接托动它,因为托动它让它成为所有商品视图中的子控件,只能通过在storyboard中改变它的, 改变它的Y值,这样才不会改变它的层级关系

(7)、九宫格计算-冯金伟博客园

先将label设置为透明,再将它进行连线

(7)、九宫格计算-冯金伟博客园

(7)、九宫格计算-冯金伟博客园

(7)、九宫格计算-冯金伟博客园

运行效果如下:

(7)、九宫格计算-冯金伟博客园

将label设置成黑底白色的样式

(7)、九宫格计算-冯金伟博客园

如果要设置成半透明,而如果直接将label的alpha设置成半透明,发现文字也成了半透明了,所以得将它的背景色设置半透明才行:

(7)、九宫格计算-冯金伟博客园

再次查看运行效果如下:

(7)、九宫格计算-冯金伟博客园

(7)、九宫格计算-冯金伟博客园

实际中的用法:就可以实现了背景色半透明,而文字不会跟着透明

(7)、九宫格计算-冯金伟博客园

效果图如下:

(7)、九宫格计算-冯金伟博客园

接着做隐藏显示器HUD

(7)、九宫格计算-冯金伟博客园

观察是否两秒后调用hidenHUD方法

(7)、九宫格计算-冯金伟博客园

然后在隐藏HUD方中设置隐藏HUD显示提示

(7)、九宫格计算-冯金伟博客园

也可以使用如下方法

 (7)、九宫格计算-冯金伟博客园

参数repeats:YES为重复

(7)、九宫格计算-冯金伟博客园

将相同的代码抽取出来

(7)、九宫格计算-冯金伟博客园

总结:

(7)、九宫格计算-冯金伟博客园

(7)、九宫格计算-冯金伟博客园