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终于是一个数组,数组里面是字典 ...
随机推荐
- Android进程机制
以下资料摘录整理自老罗的Android之旅博客,是对老罗的博客关于Android底层原理的一个抽象的知识概括总结(如有错误欢迎指出)(侵删):http://blog.csdn.net/luosheng ...
- tomcat结合nginx使用 基础教程
相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人未必了解. 说到反向代理,可能很多人都听说,但具体什么是反向代理,很多人估计就不清楚了 ...
- WIN7 64位上 MYSQL的ODBC一些个人理解
最近电脑中毒了,无奈之下把32位的xp换成了64位的win7,无聊耗时的搭完开发环境,装了vs6.0(忽略掉一切的不兼容),装完64位的mysql(“mysql-5.6.10-winx64.zip”) ...
- 安装Linux和Windows的双系统
平时使用较多的操作系统是Windows,想玩玩Linux平时也是在虚拟机上,强迫症的怎么能忍,一直想装个双系统,也能强迫自己练习Linux命令,之前重装系统的时候也试着装了一下,但是准备不够充分.结果 ...
- 本篇文章主要是对jquery+ajax+C#实现无刷新操作数据库数据的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
我们知道同步执行和异步执行的区别,为了更好的提高用户的体验,我们都会采用异步方式去处理一些问题,毕竟单线程的同步可能回造成卡死等现象,很不友好,所以可以使用ajax来完成用户的体验,现在我们就来说说如 ...
- LINQ Enumerable
System.Linq.Enumerable类,提供了数十种称为扩展方法的共享方法,帮助您操作所有实现IEnumerable(of T)接口的类中的数据.由于Enumerable类的扩展方法可以处理许 ...
- ASP.NET页面周期
上图为ASP.NET页面生命周期图. 以下详细讲解一下ASP.NET的页面生命周期. 请求页 请求页发生在页生命周期之前.用户请求时,ASP.NET将确定是否需要分析和编译页面,或者是否可以在不运 ...
- 向ASP.NET服务器控件中嵌入CSS资源
Step1:于[项目解决方案]中右键新建[ASP.NET服务器控件]项目 Step2:于项目中添加[Resources]文件夹,于该文件夹下添加[CSS文件] Step3:单击该CSS文件,并将[属性 ...
- C/C++中的++a和a++
代码: #include <iostream> #include <cstdio> using namespace std; int main(){ ; (++a)+=a; / ...
- geoserver + postgis+postgresql+agslib.swc
运用开源的geoserver+postgis+postgresql+arcgis for flex api 开发地图应用系统. 1.Geoserver GeoServer 是 OpenGIS Web ...