iOS--九宫格布局
[self rankWithTotalColumns: andWithAppW: andWithAppH:]; //九宫格布局
- (void)rankWithTotalColumns:(int)totalColumns andWithAppW:(int)appW andWithAppH:(int)appH{
//总列数
int _totalColumns = totalColumns; //view尺寸
CGFloat _appW = appW;
CGFloat _appH = appH; //横向间隙 (控制器view的宽度 - 列数*应用宽度)/(列数 + 1)
CGFloat margin = (self.view.frame.size.width - (_totalColumns * )) / (_totalColumns + ); NSLog(@"%lu",(unsigned long)self.TitleList.count); for (int index = ; index < self.TitleList.count; index++) {
//创建一个小框框//
UIView *appView = [[UIView alloc] init];
appView.backgroundColor = [UIColor whiteColor];
appView.layer.borderColor = [[UIColor colorWithRed:/255.0 green:/255.0 blue:/255.0 alpha:] CGColor];
appView.layer.borderWidth = ; DataOldBody *item =[self.TitleList objectAtIndex:index]; // 添加图片
UIButton *iconView = [[UIButton alloc] initWithFrame:CGRectMake(, , , )];
UIImage *normal = [UIImage imageNamed:item.CharPicName];
[iconView setBackgroundImage:normal forState:UIControlStateNormal]; //添加点击事件
[iconView addTarget:self action:@selector(handTap:) forControlEvents:UIControlEventTouchUpInside];
[iconView setTag:item.CharId];
[appView addSubview:iconView]; //添加简介信息
UILabel *label = [[UILabel alloc] init];
label.text = item.CharBodyText;
label.frame = CGRectMake(, , , );
label.font = [UIFont fontWithName:@"Kailasa" size:];
label.textAlignment = NSTextAlignmentCenter;
label.numberOfLines = ;
[appView addSubview:label]; if (moonAndSuns) {
label.backgroundColor = [UIColor colorWithRed:/255.0 green:/255.0 blue:/255.0 alpha:];
label.textColor = [UIColor whiteColor]; }else{
label.backgroundColor = [UIColor whiteColor];
label.textColor = [UIColor blackColor];
}
//创建结束// //计算框框的位置...行号列号从0开始
//行号
int row = index / totalColumns; //行号为框框的序号对列数取商
//列号
int col = index % totalColumns; //列号为框框的序号对列数取余 CGFloat appX = margin + col * (appW + margin); // 每个框框靠左边的宽度为 (平均间隔+框框自己的宽度)
CGFloat appY = + row * (appH + margin); // 每个框框靠上面的高度为 平均间隔+框框自己的高度 appView.frame = CGRectMake(appX, appY, _appW, _appH); [self.scrollView addSubview:appView];
}
} -(void)handTap:(id)sender{
NSInteger i = [sender tag];
NSLog(@"%ld",(long)i);
OldFirstBodyViewController *OldFirstBody = [self.storyboard instantiateViewControllerWithIdentifier:@"OldFirstBody"];
OldFirstBody.index = i;
[self.navigationController pushViewController:OldFirstBody animated:YES]; }
iOS--九宫格布局的更多相关文章
- iOS回顾笔记( 02 ) -- 由九宫格布局引发的一系列“惨案”
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- iOS - FlexBox 布局之 YogaKit
由于刚开始的项目主要用的H5.javaScript技术为主原生开发为辅的手段开发的项目,UI主要是还是H5,如今翻原生.为了方便同时维护两端.才找到这个很不错的库. FlexBox?听起来像是一门H5 ...
- 【IOS界面布局】横竖屏切换和控件自适应(推荐)
[IOS界面布局]横竖屏切换和控件自适应(推荐) 分类: [MAC/IOS下开发]2013-11-06 15:14 8798人阅读 评论(0) 收藏 举报 横竖屏切换 自适应 第一种:通过人为的办法改 ...
- iOS学习——布局利器Masonry框架源码深度剖析
iOS开发过程中很大一部分内容就是界面布局和跳转,iOS的布局方式也经历了 显式坐标定位方式 --> autoresizingMask --> iOS 6.0推出的自动布局(Auto La ...
- iOS- 用UICollectionViewController 来进行横竖屏九宫格布局
1.简单说说UICollectionViewController 我们在做九宫格布局时,可以使用UIScrollView,也可以使用UICollectionViewController. 当我们用UI ...
- iOS 九宫格手势密码
代码地址如下:http://www.demodashi.com/demo/11490.html 一.准备工作 需要准备什么环境 xcode,iOS8+ 本例子实现什么功能 主要实现手势密码设置,验证 ...
- table 实现 九宫格布局
九宫格布局 最近遇到一个题目,是实现一个九宫格布局的.实现的效果大概是下图这种这样子的: (鼠标悬浮的时候,九宫格的边框颜色是改变的.) 首先想到的是直接使用<table>进行布局,原因很 ...
- [RN] React Native 使用 FlatList 实现九宫格布局 GridList
React Native 使用 FlatList 实现九宫格布局 先看图片演示实例: 本文以图片列表为例,实现九宫格布局! 主要有两种方法: 1)方法一: 利用FlatList的 numColumns ...
- ListView 九宫格布局实现
1.效果图 2.数据 SettingData.json { "data": [{ "icon":"setting", "title ...
- 【iOS开发-48】九宫格布局案例:自己主动布局、字典转模型运用、id和instancetype差别、xib反复视图运用及与nib关系
本次九宫格案例: (1)导入app.plist和各种图片素材,方便兴许开发.实际开发中,也是如此. (2)把plist中数组导入进来. --由于本案例中app.plist终于是一个数组,数组里面是字典 ...
随机推荐
- akka
akka学习 http://www.cnblogs.com/libaoheng/archive/2012/03/19/2406836.html
- mysql慢查优化总结
1.优化sql语句结构 or改成union,使用start,limit 先只查询出所有的id,然后再排序.如果查询出所有的id仍然很慢,就要仔细考虑了. 2.添加索引 mysql每次查询只能使用一个索 ...
- (转)js获取url参数值
明天有空编辑下 今天做项目遇到js取得url地址问号后面的参数,找了下面的,用着非常好,项目是选项卡样式的,也就是一点击二级分类,底下的同样名字的背景变红(选项卡倍选中) http://www.cnb ...
- ruby 知识点
$LOAD_PATH 执行 require 读取文件时搜索的目录名数组,也可以写作 $: 创建 URI 的时候可以直接这样 URI("http://www.dy2018.com/i/9751 ...
- PartialViewResult用法
后台代码 ) { IList<TestModel> lstTestModel = this.GetModelList(categoryid); return PartialView(lst ...
- MyEclipse内存不足的问题
今早打开MyEclipse莫名其妙弹出提示框,然后我各种搜索,用了网上能查到的各种办法去试图解决问题,方法包括但不限于 修改eclipse.ini .设置Default VM Arguments . ...
- JavaScript 客户端JavaScript之Document对象中的表单和表单元素
Form对象 代表一个HTML表单(document可以有多个表单元素) 表单访问 document.form[document.forms.length-1] 访问表单元素 document.for ...
- 将图片转换为Base64
string Imagefilename 硬盘路径 protected string ImgToBase64String(string Imagefilename) { try { Bitmap ...
- [转] linux 下 进程和线程的区别
1.进程与线程 进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集.从内核的观点看,进程的目的就是担当分配系统资源(CPU时间.内存等)的基本单位. 线程是进程的一个执行流,是C ...
- macbook air 安装win7系统时,到最后一步要进入win7,需要给PC设置一个用户名,键盘没反应
从 bootcamp安装:1.一定要同时选中第一项 制作usb安装盘和第二项 从网上下载最新的windows支持软件,2.然后再选第三项 安装winDows,3.当进入安装界面时选择你要安装的boot ...