由于项目上的需求,需要做一个表格出来,来显示流程状态。刚开始脑子一头雾水,没有一点思路,但是靠着自己的座右铭--“世上无难事,只怕有心人”,克服了所有困难。好,不说了,讲正事。

制作表格,还是需要tableView来做。

1. 创建一个UIView对象 ;

UIView *tableViewHeadView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, kCount*kWidth, kHeight)];

self.myHeadView=tableViewHeadView; //(myHeadView 是 UIView)

2.创建N个字段的View的对象,放到 上面创建的tableViewHeadView上;

for(int i=0;i<kCount;i++){

UIView *headView=[[UIView alloc]initWithFrame:CGRectMake(i*kWidth, 0, kWidth, kHeight)];

headView.backgroundColor=[UIColorcolorWithRed:arc4random_uniform(255)/255.0green:arc4random_uniform(255)/255.0blue:arc4random_uniform(255)/255.0alpha:1];

[tableViewHeadView addSubview:headView];

}

3.然后创建一个UITableView对象 ;

UITableView *tableView=[[UITableViewalloc]initWithFrame:CGRectMake(0, 0, self.myHeadView.frame.size.width, 460) style:UITableViewStylePlain];

tableView.delegate=self;

tableView.dataSource=self;

tableView.bounces=YES;

tableView.separatorStyle=UITableViewCellSeparatorStyleNone;

self.myTableView=tableView;

tableView.backgroundColor=[UIColorwhiteColor];

4.创建一个UIScrollView对象,放置上面的tableView对象,并且将其位置右移部分像素;

UIScrollView *myScrollView=[[UIScrollViewalloc]initWithFrame:CGRectMake(kWidth*0.7, 0, self.view.frame.size.width-kWidth*0.7, 480)];

[myScrollView addSubview:tableView];

myScrollView.contentSize=CGSizeMake(self.myHeadView.frame.size.width,0);

myScrollView.bounces=YES;

[self.view addSubview:myScrollView];

5.创建表最左边的的字段的列;//有人会问,为什么不在上面的tableview里面一起表现出来呢。这里,我想告诉你的是,为了实现,表格第一列不动,其他列可以滑动的效果,所以这样做了。这样做 还有最重要一步,就是要实现滚动非第一列的时候,保证整个tableView和 第一列同时滑动,这就是我第6步要实现的了;

self.timeView=[[TimeView alloc]initWithFrame:CGRectMake(0, 100, kWidth*0.7, kCount*(kHeight+kHeightMargin))]; //在TimeView 类里面,创建了一个tableView

[self.view addSubview:self.timeView];

6. 实现UIScrollView的delegate

-(void)scrollViewDidScroll:(UIScrollView *)scrollView

{

CGFloat offsetY= self.myTableView.contentOffset.y;

CGPoint timeOffsetY=self.timeView.timeTableView.contentOffset;

timeOffsetY.y=offsetY;

self.timeView.timeTableView.contentOffset=timeOffsetY;

if(offsetY==0){

self.timeView.timeTableView.contentOffset=CGPointZero;

}

}

7.接下来就是实现tableView的delegate 和 dataSource。

在这里要说明一下,Mycell这个类的初始化方法里面,又创建了N个view

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

{

self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

if (self) {

for(int i=0;i<20;i++){

UIView *headView=[[UIViewalloc]initWithFrame:CGRectMake(i*kWidth, 0, kWidth-kWidthMargin, kHeight+kHeightMargin)];

headView.backgroundColor=[UIColor whiteColor];

[self.contentView addSubview:headView];

}

}

returnself;

}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

return kCount-1;

}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *cellIdentifier=@"cell";

MyCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

if(cell==nil){

cell=[[MyCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:cellIdentifier];

cell.backgroundColor=[UIColorgrayColor];

//        cell.selectionStyle=UITableViewCellSelectionStyleNone;

[cell setSelectionStyle:UITableViewCellSelectionStyleDefault];

}

return cell;

}

8.最后异步需要将前面第1步,创建的那个headerView,放置到表头,并设置表头高度;

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

{

returnself.myHeadView;

}

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

{

returnkHeight;

}

这里只是写了个极具简单的表格,没有将数据填充进去,后续会加进去的。。。

iOS表格制作的更多相关文章

  1. Microsoft Excel Sheet/表格 制作折线图

    Microsoft Excel Sheet/表格 制作折线图 虽然比较简单,但是仍然需要稍微花一点功夫. 1.制作好表格数据 2.先将数据选定(不包括 横座标的 年月日或其他的刻度 的那一列) 3.插 ...

  2. Latex表格制作记录

    Latex表格制作记录 主要功能 合并表格的行列 长表格的使用 makecell例程借鉴 效果图 参考代码 \documentclass{ctexart} \usepackage{indentfirs ...

  3. iOS XCode7制作.Framework动态库和.a静态库的总结

    一.开发SDK时的支持情况: OC语言制作动态库时,支持iOS8+:OC语言制作静态库,支持iOS7+. Swift语言制作动态库时,支持iOS8+;Swift不支持静态库. 对于SDK来说,支持情况 ...

  4. HTML之表格制作

    如何制作一个表格? 如何制作一个表格呢?  观察如下代码: <!DOCTYPE html> <html lang="en"> <head> &l ...

  5. 游戏制作之路:一个对我来说可实现的High-end的Mac/iOS游戏制作大概计划

    对于学习一些东西,我比较习惯任务驱动式的学习,也就是说,要事先订好一个目标,要做什么东西,达到什么效果,然后根据自己了解的知识作一个可以实现这个目标的计划. 现在要学的是游戏制作,而且是High-en ...

  6. iOS,Xcode7 制作Framework,含资源和界面

    Xcode7 制作Framework  本文通过Demo方式介绍1)将含bundle和存代码编写界面打包进framework:2)将storyboard +assets.xcassets打包. (一) ...

  7. iOS:插件制作入门

    本文将介绍创建一个Xcode4插件所需要的基本步骤以及一些常用的方法.请注意为Xcode创建插件并没有任何的官方支持,因此本文所描述的方法和提供的信息可能会随Apple在Xcode上做的变化而失效.另 ...

  8. Latex:表格制作全攻略

    给出一个制作复杂表格的例子,制作表格主要用到multicolumn,multirow和cline,其中,要使用multirow,必须usepackage{multirow} 如果要制作出如下图所示的表 ...

  9. ios证书制作与上架指南

    项目开发完了,要上架 ios AppStore 记录一下经过,以及需要提前准备和预防的东西,以便下次省心! 一.首先要申请开发者账号: 账号按流程注册申请,当时申请了够10遍,总结以下经验: 1.申请 ...

随机推荐

  1. UVa11988 Broken Keyboard(练习链表使用)

    向量和数组的优势是可以随机的存取元素和在末尾添加删除元素,而当插入元素时,需要移动大量的数据,消耗大量的时间.而链表的优势是可以在O(1)删除和插入数据.所以在频繁移动元素时,可以使用链表. 分析:如 ...

  2. webstorm编辑器设置为vim的方法

    首先有这个插件,其设置如下,选中即可 打开和关闭方法: https://www.jetbrains.com/help/webstorm/vim-emulation.html https://plugi ...

  3. netty handle处理流程

    server handlerAdded server channelRegistered server channelActive server read server channelInactive ...

  4. ubuntu+let's encrypt生成永久免费https证书 ubuntu+tomcat+nginx+let's encrypt

    1. 下载let's encrypt $ sudo add-apt-repository ppa:certbot/certbot $ sudo apt-get update $ sudo apt-ge ...

  5. 【BIEE】[nQSError: 35008]尝试从服务器检出对象时出错。请验证服务器设置。

    今天在使用PRD时,我先导入表A,然后觉得表A的名字不好,就把导入的表A重命名为表A_TMP,接着保存资料库就卡住了"未响应"(一般不会出现这种问题) 接着我直接使用任务管理器强制 ...

  6. C#代码用法

    1.new的用法using System;using System.Collections.Generic;using System.Text;namespace yanz{public class ...

  7. asp.net core mvc视频A:笔记2-4.ActionResult(动作结果,即返回值)

    json类型测试 方法一:实例化对象方式 代码 运行结果 方法二:封装方式 代码改动 运行结果 重点视图返回介绍,其他的不做介绍了 项目文件目录及文件添加 代码 运行结果 如果要显示的不是默认视图,可 ...

  8. android监听事件的方式

    1.匿名内部类 bt.setOnClickListener(new OnClickListener(){ @Overridepublic void onClick(View view){//Here ...

  9. nginx适配移动端

    考虑到网站的在多种设备下的兼容性,有很多网站会有手机版和电脑版两个版本.访问同一个网站URL,当服务端识别出用户使用电脑访问,就打开电脑版的页面,用户如果使用手机访问,则会得到手机版的页面. ngin ...

  10. Linux系统防CC攻击自动拉黑IP增强版Shell脚本 《Linux系统防CC攻击自动拉黑IP增强版Shell脚本》来自张戈博客

    前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存黑名单突然无法过滤后台,导致WordPress无法登录!虽然,可以通过修改本地hosts文件来解决这个 ...