AJ学IOS(05)UI之360等下载管理器九宫格UI
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];
AJ学IOS(05)UI之360等下载管理器九宫格UI的更多相关文章
- (素材源代码) 猫猫学IOS(五)UI之360等下载管理器九宫格UI
猫猫分享,必须精品 先看效果 代码学习地址: 猫猫学IOS(五)UI之360等下载管理器九宫格UI 猫猫学IOS(五)UI之360等下载管理器九宫格UI http://blog.csdn.net/u0 ...
- 猫学习IOS(五岁以下儿童)UI之360其他下载管理器广场UI
猫分享.必须精品 下载材料:http://blog.csdn.net/u013357243/article/details/44486651 先看效果 主要是完毕了九宫格UI的搭建 代码 - (voi ...
- AJ学IOS(08)UI之热门_喜马拉雅UI实现-UIScrollView的使用
AJ分享,必须精品 先看效果 storyBoard用到的控件 代码实现 */ // // NYViewController.m // 05 - 喜马拉雅 // // Created by apple ...
- AJ学IOS(28)UI之Quartz2D简单介绍
AJ分享,必须精品 iOS开发UI篇—Quartz2D简单介绍 什么是Quartz2D Quartz 2D是⼀个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作: 绘制图形 : ...
- AJ学IOS(13)UI之UITableView学习(下)汽车名牌带右侧索引
AJ分享,必须精品 先看效果图 代码 ViewController #import "NYViewController.h" #import "NYCarGroup.h& ...
- AJ学IOS 之微博项目实战(2)微博主框架-自定义导航控制器NavigationController
AJ分享,必须精品 一:添加导航控制器 上一篇博客完成了对底部的TabBar的设置,这一章我们完成自定义导航控制器(NYNavigationController). 为啥要做自定义呢,因为为了更好地封 ...
- AJ学IOS(48)多线程网络之多线程简单了解
AJ分享,必须精品 一:进程和线程 1:什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内. 比如同时打开QQ.Xcode,系统就会分 ...
- AJ学IOS(46)之网易彩票幸运大转盘
AJ分享,必须精品 效果 实现过程: 基础UI搭建 这里主要是用了xib搭建,首先我们分析,有中间的开始按钮,背景图片,还有星座按钮,这里能用xib做的事开始按钮和背景图片. 如图: 星座按钮的搭建: ...
- AJ学IOS(01) UI之Hello World与加法计算器
不多说,AJ分享,必须精品 这两个一个是HelloWorld(左边) 另一个是 加法计算器(右边)的截图. 先运行第一个 程序看看效果 1.打开Xcode(没有哦mac系统的没有xcode的帮你们默哀 ...
随机推荐
- 【译】HTTP/2 为更快速的网站而生
最近在做一个内部的服务对接,使用了Google的gRPC框架,gRPC是基于HTTP/2和protocol buffers实现的,所以额外去了解了一下HTTP/2,找到这这边文章.这篇文章虽然是写于2 ...
- 理解Go语言组件flag
作用 主要用来实现命令行的参数解析,以达到实现以下效果的目的 $ cmd -flagname 123 使用方式 flag是Go语言的内置包,能接收的参数类型主要有字符串.布尔和数值类型. 方式一 fu ...
- 带修主席树 洛谷2617 支持单点更新以及区间kth大查询
题目链接:https://www.luogu.com.cn/problem/P2617 参考博客:https://blog.csdn.net/dreaming__ldx/article/details ...
- 第七周java实验作业
实验七 继承附加实验实验时间 2018-10-11 1.实验目的与要求 (1)进一步理解4个成员访问权限修饰符的用途: Public 该类或非该类均可访问 Private 只有该类可以访问 Pro ...
- UCF Local Programming Contest 2016 J题(二分+bfs)
题目链接如下: https://nanti.jisuanke.com/t/43321 思路: 显然我们要采用二分的方法来寻找答案,给定一个高度如果能确定在这个高度时是否可以安全到达终点,那我们就可以很 ...
- 贪心-Course Schedule III
2020-02-01 21:37:39 问题描述: 问题求解: 对于课程来说截止时间在前面的肯定需要优先安排,所以首先需要将courses按照deadline进行排序. 然后只需要不断的加入当前的课程 ...
- [模拟]Educational Codeforces Round 2A Extract Numbers
Extract Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- mac下 yarn Stack trace: ExitCodeException exitCode=127
问题出在hadoop 为mac系统配置的读取java_home处. 更改 /Users/shaofengfeng/apache/hadoop/libexec/hadoop-config.sh 如下 # ...
- 微信小程序分享转发用法大全——自定义分享、全局分享、组合分享
官方提供的自定义分享 使用隐式页面配置函数实现的全局分享-推荐 使用隐式路由实现的全局分享-不推荐,仅供了解隐式路由 前言: 目前微信小程序只开放了页面自定义分享的API,为了能够更灵活的进行分享配置 ...
- GB2312,GBK和UTF-8的区别
GBK GBK包含全部中文字符, GBK的文字编码是双字节来表示的,即不论中.英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1.至于UTF-8编码则是用以解决国际上字符的一种多字节编码 ...