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终于是一个数组,数组里面是字典 ...
随机推荐
- nginx 配置轮询服务
通常我们应用nginx做代理时,用到它的轮训服务 #设置轮询名称 upstream zyy{ server 127.0.0.1:8080 #本机的apache服务 } server { listen ...
- 计算方法(一)用C#实现数值迭代
平时,经常会遇到解方程,计算方法中常用的有二分法(精度太低,迭代次数多,一般没人用),牛顿迭代法,弦截法,网上大多都是C++或者Java的实现代码,很少有C#的,我在本科毕业论文中用到了这些,那时也需 ...
- mui实现退出当前应用
var first = null; var showMenu = false; mui.back = function() { if(showMenu) { closeMenu();} else { ...
- linux中内核的一个不错的参数somaxconn
导读:在linux中,/proc/sys/net/core/somaxconn这个参数,linux中内核的一个不错的参数somaxconn 看下其解析: 对于一个TCP连接,Server与Client ...
- 网页JavaScript3
window.document 1,确认元素, document.getElementById("id"); 根据id找元素 doucment.getEleme ...
- HTML5摇一摇
方式一 (function(){ /** * 摇一摇 * @author rubekid */ function Shake(options){ this.init(options); } Shake ...
- TreeView控件之,后台构建TreeView(WinForm小程序)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAX0AAAIdCAIAAABeBzrBAAAgAElEQVR4nOzdd5Qc130n+tl/nr3e5+
- display 与 visibility
项目开发中经常会遇到需要显示和隐藏DOM元素.常用的两个是display,visibility属性,高级点的会用到angularJS的ng-show,ng-if指令. W3标准对这个两个属性的解释如下 ...
- Mysql 视图笔记
1. 视图的定义 视图就是从一个或多个表中,导出来的表,是一个虚拟存在的表.视图就像一个窗口(数据展示的窗口),通过这个窗口,可以看到系统专门提供的数据(也可以查看到数据表的全部数据),使 ...
- String分割类
StringTokenizer类 用的时候要 import java.util.StringTokenizer; StringTokenizer b=new StringTokenizer( Stri ...