在做这个tablevew轮播的时候,重要的就是修改frame 和view 的翻转了::::

也是不难的,概要的设计和scroll 轮播是一致的;

首先是 .h 的文件

@interface TableViewShuffling : UIView@property (nonatomic,strong)NSArray *array;@end

重要的点在.m 文件中加载了详细的注释

@interface TableViewShuffling ()<UITableViewDelegate,UITableViewDataSource>@property(nonatomic,strong)UITableView *tableView;@property(nonatomic,strong)NSMutableArray *tableArray;@end@implementation TableViewShuffling
@synthesize array = _array;- (instancetype)initWithFrame:(CGRect)frame{if (  self = [super initWithFrame:frame]) {}return self;
}-(UITableView*)tableView{if (_tableView == nil) {/*_tableView.transform = CGAffineTransformMakeRotation(-M_PI / 2);

CGRect tabelRect = CGRectMake(10, 10, self.frame.size.height-20, self.frame.size.width-20);
重点:::因为table view 翻转 90度角 ,所以frame 设计的时候 宽高 ==互 换===了*/CGRect tabelRect = CGRectMake(10, 10, self.frame.size.height-20, self.frame.size.width-20);_tableView = [[UITableView alloc] initWithFrame:tabelRect style:UITableViewStylePlain];[self addSubview:self.tableView];_tableView.delegate = self;_tableView.dataSource = self;_tableView.pagingEnabled = YES;  // scrollbar 不显示//tableview逆时针旋转90度。_tableView.transform = CGAffineTransformMakeRotation(-M_PI / 2);
/*

 _tableView.center = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2);
重点::: 同样,因为翻转的关系,要把table 重写设置初始位置*/_tableView.center = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2);}return _tableView;
}-(void)setArray:(NSArray *)array{NSAssert(array.count != 0, @"传入的滚动数组是 空的");_array = array;[self prepareData];[self prepareUI];
}-(void)prepareUI{/*跳转到 row 1===*/[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0] animated:YES scrollPosition:UITableViewScrollPositionTop];[self.tableView reloadData];
}- (void)prepareData{self.tableArray = [NSMutableArray new];//    首位 添加数组最后的元素
    [self.tableArray addObject:_array.lastObject];//   添加数组元素
    [self.tableArray addObjectsFromArray:_array];//    末尾 补充第一个元素
    [self.tableArray addObject:_array.firstObject];
}-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{   /*row height 千万分清楚 应该是 width 还是haigh 的值*/return self.frame.size.width-20;
}-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{return self.tableArray.count;
}- (UITableViewCell *)tableView :( UITableView *)tableView cellForRowAtIndexPath:( NSIndexPath*)indexPath
{/*为什么 不要用系统cell,必须自定义??因为你设置 这个tableShuffling view 高度小的时候,会影响titlelabel 等属性显示不全,因为翻转的时候,他们的位置没有改变UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];if (cell == nil) {cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"];// cell顺时针旋转90度cell.contentView.transform = CGAffineTransformMakeRotation(M_PI / 2);}cell.textLabel.text = [NSString stringWithFormat:@"';llkjjjjjjhgfds1234567890-=qwertyuioyuiop[asdfghjkl;zxcvbnm,====%ld",(long)indexPath.row];cell.textLabel.numberOfLines = 0;cell.contentView.backgroundColor = (UIColor*)self.tableArray[indexPath.row];cell.selectionStyle = UITableViewCellSelectionStyleNone;return cell;*/ShufflingCell *cell = [ShufflingCell getCellForTableView:tableView withIdentifier:@"ShufflingCell" andIndexPath:indexPath];/*
    cell.contentView.transform = CGAffineTransformMakeRotation(M_PI / 2);
table View 翻转了,但是要把 cell 翻转回正常的状态,否则自定义的cell 显示也是翻转的*/cell.contentView.transform = CGAffineTransformMakeRotation(M_PI / 2);cell.contentView.backgroundColor = (UIColor*)self.tableArray[indexPath.row];cell.selectionStyle = UITableViewCellSelectionStyleNone;return cell;}-(void)scrollViewDidScroll:(UIScrollView *)scrollView{if (scrollView == self.tableView) {//检测移动的位移if (scrollView.contentOffset.y == (self.tableArray.count-1)*(self.frame.size.width-20) ) {[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop];}else if (scrollView.contentOffset.y == 0){[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:(self.tableArray.count-2) inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop];}else{//            正常滚动
        }}
}

table view 的滚动视图也基本完成,好久没写了,过程有点曲折;

总结下重点:::

  1. frame 翻转前后设置
  2. row Height 的设置
  3. table 翻转后 cell正常显示,一定要翻转回去

外部调用方法:::::

-(void)prepareTableShuffling{TableViewShuffling *tableffling = [[TableViewShuffling alloc]initWithFrame:CGRectMake(10, 150, self.view.frame.size.width -20, 150)];[self.view addSubview:tableffling];;tableffling.array = self.arr;
}

辛苦的我,今天想早点下班,明天继续……………………

转载于:https://www.cnblogs.com/Bob-blogs/p/6769875.html

01.轮播图之二 :tableView 轮播相关推荐

  1. js原生选项卡(自动播放无缝滚动轮播图)二

    今天分享一下自动播放轮播图,自动播放轮播图是在昨天分享的轮播图的基础上添加了定时器,用定时器控制图片的自动切换,函数中首先封装一个方向的自动播放工能的小函数,这个函数中添加定时器,定时器中可以放向右走 ...

  2. axure轮播图怎么设置循环轮播_Axure教程:轮播图制作步骤详解

    不管是在PC端还是移动端,轮播图是常见的设计元素.下面详细讲解轮播图的制作步骤. 作为Axure初学者,把最近学到的记录下来,和大家一起学习. 如何实现轮播图: 循环展示轮播图片: 将圆点与轮播图一一 ...

  3. 利用swiper在vue中做轮播图,并改变轮播图的原有箭头、图片等内容

    目标:利用swiper在vue中做轮播图,并改变轮播图的原有箭头.图片等内容. 实现效果:1.点击左右箭头可切换图片. 2.点击后图片出现最左侧样式效果,只有被点击的图片有此效果,不被点击恢复默认效果 ...

  4. 仿爱奇艺视频,腾讯视频,搜狐视频首页推荐位轮播图(二)之SuperIndicator源码分析

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼:http://blog.csdn.net/hejjunlin/article/details/52510431 背景:仿爱奇艺视频,腾讯视频 ...

  5. JavaScript_轮播图(二)

    文章目录 效果图: 需求分析: 源代码: 所用图片: 效果图: 需求分析: 根据图片数量生成对应的小圆点 克隆第一个li,放到ul的最后面 最开始显示第一个li,点亮第一个小圆点 点击left按钮,看 ...

  6. android轮播图实现方案,Android轮播图实现教程

    ListView的headerView设置为轮播图之后结合上/下拉刷新/加载的模式成为现在大多数APP的一个必须具备的功能,对于许多初学者来说想要实现轮播图这样一个集线程睡眠.自动处理.替换过程中刷新 ...

  7. 【轮播图】使用bootstrap轮播插件(Carousel)

    Bootstrap 轮播(Carousel)插件是一种灵活的响应式的向站点添加滑块的方式.内容是足够灵活的,可以是图像.内嵌框架.视频或者其他想要放置的任何类型的内容. 源代码 <!DOCTYP ...

  8. 原生JS实现小米轮播图和网易云轮播图

    文章目录 小米轮播图 网易云轮播图 小米轮播图 实现功能: 定时切换(2s) 点击按钮停止切换 点击向左向右按钮进行相应切换 鼠标点击下方的小圆点,并进行相应的切换 效果: 代码如下: <!DO ...

  9. 小程序倒计时轮播图、导航切换轮播

    最近项目需要实现轮播图有倒计时圆点然后自动切换图片加导航点击切换轮播内容的需求,项目结束,在这里总结一下 先上效果图,让各位兄弟看看是不是也符合各自需要的那种需求,相互学习 我是把这写在一个组件里面的 ...

  10. html 轮播图自适应,JavaScript 自适应轮播图

    JavaScript 自适应轮播图 代码 话不多说,先上代码,方便复制粘贴.演示 轮播图 *{ margin: 0; padding: 0; } ul{ list-style: none; } img ...

最新文章

  1. 微信小程序上传图片时provisional headers are shown显示我的错误解决方案
  2. 鸟哥的Linux私房菜(服务器)- 第二十章、WWW 伺服器
  3. MatConvnet工具箱文档翻译理解(3)
  4. 在Linux服务器上配置phpMyAdmin--允许空密码
  5. BZOJ1058 ZJOI2007 报表统计 线段树+平衡树
  6. python 下字符串格式时间比较
  7. MySQL中update一条record的过程
  8. 【Python】GUI编程(Tkinter)教程
  9. (数据挖掘-入门-2)相似度衡量的方法
  10. linux菜鸟要飞-根目录
  11. JAVA处理字符串压缩以及文件压缩
  12. cad2010多个文件并排显示_CAD2010中如何将多个文档并排显示在一个窗口里?
  13. python教程ppt第五章_Python 3基础教程 第5章面向对象编程.ppt
  14. iOS 整理iOS9适配中出现的坑
  15. 读书印记 - 《批判性思维工具》
  16. matlab和keil下如何查找数组最大值的下标(角标)
  17. 品牌故事宣传片制作要点
  18. oracle自动化巡检报告
  19. 信息化15年规划推动中国信息化步入深水区
  20. 第七届河南省程序设计大赛——A 海岛争霸

热门文章

  1. android视频播放指定位置,android – 如何在某个特定位置的视图中查看视频?
  2. jQuery CSS 操作 - css() 方法
  3. 从针对接口编程到依赖注入
  4. 通过点击热区,有个href 跳到servlet,怎么把页面上的值传到servlet里面?
  5. 后台开发经典书籍--大话设计模式
  6. mysql创建表的时候对字段和表添加COMMENT
  7. accept函数与TCP三次握手
  8. Zephyr内核到1.5版本的改进
  9. 操作系统原理二进程切换,调度
  10. Maven添加Oracle的依赖及驱动