通过scrollerview自定义collectionview(常用于推荐关注界面)
最近项目上要实现一个效果,先把效果图摆上来吧:
刚看到效果图的时候 我觉得很简单 用UICollectionview就可以了 但是后来发现collectionview只有两种布局方式 比较单一 :
箭头代表滑动方向
或者
需求效果图:
方法:要实现刚才那个效果方法可能有很多解决方案 比如说重写UICollectionViewFlowLayout等方法 但这次用的方法相比于自定义UICollectionViewFlowLayout我觉得要简单一点那就是在添加一个scrollerview 在scrollerview添加view 在view上添加button:
附代码:
#import "ViewController.h" @interface ViewController ()<UIScrollViewDelegate>
@property (nonatomic,strong) UIPageControl *myPageControl;
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self addScrollerviewOnView];
}
//添加scrollerview和UIPageControl
- (void)addScrollerviewOnView{
UIScrollView *scrollview = [[UIScrollView alloc]initWithFrame:CGRectMake(, , [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
scrollview.delegate = self; scrollview.pagingEnabled = YES; scrollview.contentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width*, [UIScreen mainScreen].bounds.size.height);
scrollview.backgroundColor = [UIColor redColor];
for (int i = ; i<; i++) {
UIView *view = [[UIView alloc]initWithFrame:CGRectMake([UIScreen mainScreen].bounds.size.width*i, , [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
view.tag = i;
[self addBtnWithView:view];
view.backgroundColor = [UIColor colorWithWhite:-i*0.3 alpha:];
[scrollview addSubview:view];
} [self.view addSubview:scrollview]; UIPageControl *pageControl = [[UIPageControl alloc] init]; self.myPageControl = pageControl; pageControl.center = CGPointMake(,); pageControl.bounds = CGRectMake(, , , ); pageControl.numberOfPages = ; pageControl.pageIndicatorTintColor = [UIColor greenColor]; pageControl.currentPageIndicatorTintColor = [UIColor blueColor]; [self.view addSubview:pageControl]; }
//在scrollerview上的viwe上面添加按钮
- (void)addBtnWithView:(UIView *)view{
for (int i = ; i<(view.tag<?:); i++) {
UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake((+(i%)*(([UIScreen mainScreen].bounds.size.width-)/+)), (+(i/)*(([UIScreen mainScreen].bounds.size.height-)/+)), ([UIScreen mainScreen].bounds.size.width-)/, ([UIScreen mainScreen].bounds.size.height-)/)];
btn.backgroundColor = [UIColor yellowColor];
[view addSubview:btn];
}
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} - (void)scrollViewDidScroll:(UIScrollView *)sender
{
CGFloat pageWidth = sender.frame.size.width;
int page = floor((sender.contentOffset.x - pageWidth / ) / pageWidth) + ;
self.myPageControl.currentPage = page; }
肯定会有更简单更好的实现方法 希望能够不吝赐教,联系我
通过scrollerview自定义collectionview(常用于推荐关注界面)的更多相关文章
- Xcode常用插件推荐
1.Xcode插件管理工具–Alcatraz的安装 Alcatraz是针对Xcode的一款插件管理器,通过Alcatraz可以非常方便的管理插件,包括安装.删除.升级等操作. 官方网站 安装方法一(推 ...
- CollectionView常用的布局方式总结
结合网上的collectionView常用布局整合的collectionView使用工具 下载地址 支持五种布局方式ZFCollectionViewLayoutType有两种ZFCollectionV ...
- Chrome浏览器与常用插件推荐
Chrome浏览器与常用插件推荐 官方chrome下载:http://www.google.cn/chrome/ 提示:需要FQ才能安装. 1,AdBlock 谷歌屏蔽广告: https://chro ...
- iOS不得姐项目--推荐关注模块(一个控制器控制两个tableView),数据重复请求的问题,分页数据的加载,上拉下拉刷新(MJRefresh)
一.推荐关注模块(一个控制器控制两个tableView) -- 数据的显示 刚开始加载数据值得注意的有以下几点 导航控制器会自动调整scrollView的contentInset,最好是取消系统的设置 ...
- ATOM常用插件推荐
转载:http://blog.csdn.net/qq_30100043/article/details/53558381 ATOM常用插件推荐 simplified-chinese-menu ATOM ...
- Mac 常用软件推荐
1.常用软件推荐 这里推荐的 apps 在开发者圈子内普遍评价不错,能便利的处理日常的开发和使用的任务.以下推荐分为四类: 开发者工具 生产力工具 办公工具 其他 2.Developer Tools ...
- ubuntu安装和常用软件推荐
ubuntu安装和常用软件推荐(个人整理) 2016.08.22 17:29 13811浏览 字号 安装一套双系统,win10打游戏,ubuntu开发,win10放机械,ubuntu放固态,电脑联想i ...
- 【编程工具】Sublime Text3的安装和常用插件推荐
本人刚刚学习 HTML,曾经上网找过一些编写 HTML 的软件,但感觉都不太好,经过三挑四选下,最终我决定选择 Sublime Text3 这款软件来作为学习工具,上网找到了许多实用的插件,在这里给大 ...
- Django 编写自定义的 404 / 500 报错界面
Django 编写自定义的 404 / 500 报错界面 1. 首先 setting.py 文件中的 debug 参数设置成 false ,不启用调试. DEBUG = False 2. 在 temp ...
随机推荐
- ccr test
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Failed to lunch test error when run with Appium (已解决)
[2015-08-10 15:09:07 - androidtest1] Performing android.test.InstrumentationTestRunner JUnit launch[ ...
- 初涉C#防止黑客攻击站短
一.同一个IP如果在一分钟内连续发送5个站短可以认为是不正确的,原因有2方面: 1.发站短的页面是有点击按钮,点击按钮后马上按钮会变为不可点击,所以在前端要防止点击一次触发多次的情况 2.发送短信的U ...
- 在生成 Visual c + + 2005年或从 DLL 文件中使用 CString 派生的类的 Visual c + +.net 应用程序时,您可能会收到 LNK2019 错误消息
http://support.microsoft.com/kb/309801
- Tomcat普通用户部署教程(生产服务器)
1.环境准备 JDK安装 解压 tar xf tomcat-xx.tar.gz -C /data/soft cd /data/soft 重命名 mv tomcat-xx tom ...
- Java TreeMap 源码解析
继上篇文章介绍完了HashMap,这篇文章开始介绍Map系列另一个比较重要的类TreeMap. 大家也许能感觉到,网络上介绍HashMap的文章比较多,但是介绍TreeMap反而不那么多,这里面是有原 ...
- hdoj 2045 不容易系列之(3)—— LELE的RPG难题
不容易系列之(3)—— LELE的RPG难题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- [Objective-c 基础 - 2.7] 构造方法、重写init方法
A.id 万能指针,可以指向任何对象,实质是NSObject的指针,使用的时候不用加上* B.NSObject中得类方法new 1.完整地创建一个可用对象步骤 (1)分配存储空间 + alloc ...
- JavaScript要点 (三) 保留关键字
在 JavaScript 中,一些标识符是保留关键字,不能用作变量名或函数名. JavaScript 标准 所有的现代浏览器完全支持 ECMAScript 3(ES3,JavaScript 的第三版, ...
- HBase in 2013
2013年马上就要过去了,总结下这一年HBase在这么一年中发生的主要变化.影响最大的事件就是HBase 0.96的发布,代码结构已经按照模块化release了,而且提供了许多大家迫切需求的特点.这些 ...