[无限互联] ios开发之框架HGPageScrollView浅谈
2014-10-05 15:37
501 查看
框架HGPageScrollView实现了类UICollectionView的功能,横向滑动浏览。分两个模式甲板模式和单页模式,能添加删除页面。
demo效果图:
甲板模式:
单页模式:
deckMode按钮:在两个模式间切换
add按钮:增加页面
remove按钮:删除页面
只能在甲板模式下才能实现增加,删除功能。
代码封装运用和UITableView一样
实现HGPageScrollView的datasource协议方法
自定义pageView类,相当于自定义cell
pageData对应pageView的model,给pageView填充上数据
实现HGPageScrollView的delegate协议方法
当处于甲板模式,选中page后,切换到单页模式,重新布局page页面
pageData对应pageView的model,给pageView填充上数据
demo效果图:
甲板模式:
单页模式:
deckMode按钮:在两个模式间切换
add按钮:增加页面
remove按钮:删除页面
只能在甲板模式下才能实现增加,删除功能。
代码封装运用和UITableView一样
实现HGPageScrollView的datasource协议方法
自定义pageView类,相当于自定义cell
pageData对应pageView的model,给pageView填充上数据
#pragma mark - HGPageScrollView datasource //设置page的数量 - (NSInteger)numberOfPagesInScrollView:(HGPageScrollView *)scrollView { return _myPageDataArray.count; } //创建page - (HGPageView *)pageScrollView:(HGPageScrollView *)scrollView viewForPageAtIndex:(NSInteger)index { //page复用 static NSString *pageId = @"pageId"; MyPageView *pageView = (MyPageView*)[scrollView dequeueReusablePageWithIdentifier:pageId]; if (!pageView) { pageView = [[[NSBundle mainBundle] loadNibNamed:@"MyPageView" owner:self options:nil] lastObject]; pageView.reuseIdentifier = pageId; } MyPageData *pageData = [_myPageDataArray objectAtIndex:index]; pageView.myPageData = pageData; //设置page高度 CGRect frame = pageView.frame; frame.size.height = 420; pageView.frame = frame; return pageView; } //设置HGPageScrollView的标题 - (NSString *)pageScrollView:(HGPageScrollView *)scrollView titleForPageAtIndex:(NSInteger)index; { MyPageData *pageData = [_myPageDataArray objectAtIndex:index]; return pageData.title; } //设置HGPageScrollView的子标题 - (NSString *)pageScrollView:(HGPageScrollView *)scrollView subtitleForPageAtIndex:(NSInteger)index; { MyPageData *pageData = [_myPageDataArray objectAtIndex:index]; return pageData.subtitle; }
实现HGPageScrollView的delegate协议方法
当处于甲板模式,选中page后,切换到单页模式,重新布局page页面
#pragma mark - HGPageScrollView delegate //选中page触发的协议方法 - (void)pageScrollView:(HGPageScrollView *)scrollView didSelectPageAtIndex:(NSInteger)index { MyPageView *page = (MyPageView*)[scrollView pageAtIndex:index]; UIScrollView *pageContentsScrollView = (UIScrollView*)[page viewWithTag:10]; //重新布局page UITextView *textView = (UITextView *)[page viewWithTag:3]; CGFloat margin = 12; //计算文本高度 CGSize size = [textView.text sizeWithFont:textView.font constrainedToSize:CGSizeMake(textView.frame.size.width, 2000) lineBreakMode:UILineBreakModeWordWrap]; CGRect frame = textView.frame; frame.size.height = size.height + 4*margin; textView.frame = frame; pageContentsScrollView.contentSize = CGSizeMake(pageContentsScrollView.frame.size.width, frame.origin.y + frame.size.height); pageContentsScrollView.scrollEnabled = YES; }
pageData对应pageView的model,给pageView填充上数据
相关文章推荐
- 【iOS-Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法 推荐
- 【iOS-Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法
- 【无限互联】iOS开发视频教程— 2.2 iPhone开发之OC变量和基本数据类型1
- 【无限互联】iOS开发视频教程— 2.7 iPhone开发之while、break和continue
- 【无限互联】iOS开发视频教程— 2.6 iPhone开发之if条件和for循环语句
- 转:iOS开发框架Cocoa Touch:UIKit
- 【无限互联】iOS开发视频教程— 2.11 iPhone开发之OC基础语法复习
- 【无限互联】iOS开发视频教程—1.iPhone开发概述——必看
- IOS开发 使用TouchJSON框架 解析JSON
- 【无限互联】iOS开发视频教程— 2.9 iPhone开发之作业讲解
- 用HTML5/CSS3/JS开发Android/IOS应用框架大全
- HTML5在PhoneGap框架下开发IOS应用时常用操作和设置
- 比较Titanium和PhoneGap两大iOS移动应用开发框架
- 【无限互联】iOS开发视频教程—2.1 iPhone开发之开发工具安装及介绍
- iOS开发框架介绍(二)---iOS 框架及开发相关信息
- Titanium和PhoneGap两大iOS移动应用开发框架比较
- 【iOS-Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法
- 用.Net打造一个移动客户端(Android/IOS)的服务端框架NHM(三)——搭建Android开发环境,用Hibernate生成Android项目的Model层
- 【无限互联】iOS开发视频教程—2.4iPhone开发之基本数据类型转换
- 【无限互联】iOS开发视频教程— 2.10 iPhone开发之代码规范讲解