AJ分享,必须精品

先看效果



主要是完成了九宫格UI的搭建

代码

- (void)viewDidLoad {
[super viewDidLoad];
//九宫格中每个格子的宽
#define kAppViewW 80
//九宫格中每个格子的高
#define kAppViewH 90
////九宫格中有多少个格子
#define kColCount 3
//九宫格中第一行距离屏幕最上边距离
#define kStartY 20 /*
思路:将三个控件放到一个view中
没有通过双层for循环换行,而是通过第几个然后判断他的行和列 来定位他的xy坐标完成
012 在第一行:相当于i/kColCount
//行 一行:012 二行:345 三行:678
int row = i/kColCount;
//列 一列:036 二列:147
int col = i%kColCount; */
//每行的间隔
CGFloat marginX = (self.view.frame.size.width - kColCount*kAppViewW)/(kColCount+1);
//每列的间隔
CGFloat marginY = 10; for (int i=0; i<12; i++) { //行 一行:012 二行:345 三行:678
int row = i/kColCount;
//列 一列:036 二列:147
int col = i%kColCount; CGFloat x = marginX + col*(marginX+kAppViewW);//每个view的X坐标
CGFloat y = kStartY + +marginY + row * (marginY + kAppViewH);//每个view的Y坐标 UIView *appView = [[UIView alloc] initWithFrame:CGRectMake(x, y ,kAppViewW, kAppViewH)];
[self.view addSubview:appView]; //实现视图内部细节
NSDictionary *dict = self.appList[i];//得到appList中的每一个字典元素(图像 标题 按钮图像) //UIImageView:应用程序图片
UIImageView *icon = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, kAppViewW, 50)];
// icon .backgroundColor = [UIColor redColor];
icon.image = [UIImage imageNamed:dict[@"icon"]];//设置图片
//设置图片填充模式
icon.contentMode = UIViewContentModeScaleAspectFit;//fill的会更大 [appView addSubview:icon]; //UILabel:应用程序名称
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(icon.frame), kAppViewW, 20)];
label.text = dict[@"name"];
label.font = [UIFont systemFontOfSize:13.0];
label.textAlignment = NSTextAlignmentCenter; [appView addSubview:label]; //UIButton:应用程序下载按钮
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(label.frame), kAppViewW, 20)];
[button setBackgroundImage:[UIImage imageNamed:@"buttongreen"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"buttongreen_highlighted"] forState:UIControlStateHighlighted]; [button setTitle:@"下载" forState:UIControlStateNormal];
// *** 一定不要使用以下方法,修改按钮标题
// button.titleLabel.text = @"aaa"; // 修改字体(titleLabel是只读的)
// readonly表示不允许修改titleLabel的指针,但是可以修改label的字体
// 提示:按钮的字体是不区分状态的!
button.titleLabel.font = [UIFont systemFontOfSize:12.0];
[appView addSubview:button];
}
}

思路

思路:将三个控件放到一个view中
没有通过双层for循环换行,而是通过第几个然后判断他的行和列 来定位他的xy坐标完成
012 在第一行:相当于i/kColCount
//行 一行:012 二行:345 三行:678
int row = i/kColCount;
//列 一列:036 二列:147
int col = i%kColCount;

算法分析图

注意点

设置图片与设置图片铺垫样子的时候有点不同,如果最后设置成UIViewContentModeScaleAspectFit的话会超出定义的边框,按照原来像素大小来布置。
icon.image = [UIImage imageNamed:dict[@”icon”]];
icon.contentMode = UIViewContentModeScaleAspectFit;

UILabel;UIButton的字体设置

        //设置标题
label.text = dict[@"name"];
//设置字体大小
label.font = [UIFont systemFontOfSize:13.0];
//设置Label居中
label.textAlignment = NSTextAlignmentCenter;

button字体设置

[button setTitle:@"下载" forState:UIControlStateNormal];
// *** 一定不要使用以下方法,修改按钮标题
// button.titleLabel.text = @"aaa"; // 修改字体(titleLabel是只读的)
// readonly表示不允许修改titleLabel的指针,但是可以修改label的字体
// 提示:按钮的字体是不区分状态的!
button.titleLabel.font = [UIFont systemFontOfSize:12.0];

最新文章

  1. [Java 缓存] Java Cache之 Guava Cache的简单应用.
  2. vs2012 MSDN帮助文档离线包下载安装方法
  3. 用 eric6 与 PyQt5 实现python的极速GUI编程(系列02)---- 省市县(区)下拉列表多级联动
  4. Python基础学习笔记(六)常用列表操作函数和方法
  5. C#语法小用法
  6. 使用NPOI创建Excel文件
  7. UpdateLayeredWindow, Layered Windows, codeproject
  8. c++ 12
  9. PHP5.4 for Apache, php 5.4.0安装过程、方法、配置 ; Apache2.2支持php5.4的配置方法
  10. 使用Navicat Premium 链接本地数据库的方法
  11. JAVA三大特性之二——继承
  12. [DeeplearningAI笔记]神经网络与深度学习人工智能行业大师访谈
  13. css清除浮动方法小结
  14. gitbook 入门教程之使用 gitbook-editor 编辑器开发电子书
  15. [C++]Linux之头文件sys/types.h[/usr/include/sys]
  16. 《mysql必知必会》学习_第19章_20180809_欢
  17. 通过写一个Demo展示C#中多种常用的集合排序方法
  18. 实现类QQ的编辑框
  19. Linux命令(二十) 显示系统内存状态 free
  20. MDRT_&lt;&gt;$表

热门文章

  1. 矩阵快速幂-QuickPow
  2. Python-生成器实现简单的&quot;生产者消费者&quot;模型
  3. 201771010103 陈亚茹 《面向对象程序设计(java)》第一周学习总结
  4. VIM不正常退出产生的swp文件
  5. 洛谷 P5596 【XR-4】题 题解
  6. 采用vue编写的功能强大的swagger-ui页面
  7. c++第一个程序测试-----c++每日笔记!
  8. 探索学习率设置技巧以提高Keras中模型性能 | 炼丹技巧
  9. Redis在linux环境下的安装
  10. vue2.0 操作数组下标不跟新ui,使用set()或$forceUpdate 也不能跟新视图情况