使用UIScrollView和UIPageControl实现一个简单的图片浏览功能
2012-06-13 22:03
976 查看
由于稍微累了,就直接贴粗糙实现的代码了(没有做一些边界检查等),算是backup。
使用方法如下:
备忘一下,以后有时间、需要,再扩展。
// // CCImageScrollView.h // CCImageScrollView // // Created by Jason Lee on 12-6-13. // Copyright (c) 2012年 _XXX_. All rights reserved. // #import <UIKit/UIKit.h> @interface CCImageScrollView : UIView <UIScrollViewDelegate> @property (nonatomic, retain) NSArray *imageArray; - (id)initWithFrame:(CGRect)frame pageNum:(NSInteger)pageNum pageEnabled:(BOOL)pageEnabled; @end
// // CCImageScrollView.m // CCImageScrollView // // Created by Jason Lee on 12-6-13. // Copyright (c) 2012年 _XXX_. All rights reserved. // #import "CCImageScrollView.h" @interface CCImageScrollView () @property (nonatomic, retain) NSMutableArray *imageViewArray; @property (nonatomic, assign) NSInteger page; @property (nonatomic, assign) BOOL pageEnabled; @property (nonatomic, retain) UIScrollView *scrollView; @property (nonatomic, retain) UIPageControl *pageControl; @end @implementation CCImageScrollView @synthesize imageArray = _imageArray; @synthesize imageViewArray = _imageViewArray; @synthesize page = _page; @synthesize pageEnabled = _pageEnabled; @synthesize scrollView = _scrollView; @synthesize pageControl = _pageControl; - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code } return self; } - (id)initWithFrame:(CGRect)frame pageNum:(NSInteger)pageNum pageEnabled:(BOOL)pageEnabled { self = [super initWithFrame:frame]; if (self) { // Initialization code self.backgroundColor = [UIColor blackColor]; // Default background-color self.page = pageNum; self.pageEnabled = pageEnabled; _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; [self.scrollView setContentSize:CGSizeMake(self.page * self.frame.size.width, self.frame.size.height)]; self.scrollView.scrollEnabled = YES; self.scrollView.pagingEnabled = YES; self.scrollView.showsHorizontalScrollIndicator = NO; self.scrollView.showsVerticalScrollIndicator = NO; self.scrollView.delegate = self; int defaultPageControlHeight = 36; _pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, self.frame.size.height - defaultPageControlHeight, self.frame.size.width, defaultPageControlHeight)]; [self.pageControl setNumberOfPages:self.page]; if (!self.pageEnabled) self.pageControl.hidden = YES; [self addSubview:self.scrollView]; [self addSubview:self.pageControl]; } return self; } - (void)dealloc { [_scrollView release]; [_pageControl release]; [_imageArray release]; [_imageViewArray release]; // [super dealloc]; } /* // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. - (void)drawRect:(CGRect)rect { // Drawing code } */ - (void)loadImage { if (nil == self.imageViewArray) { self.imageViewArray = [NSMutableArray arrayWithCapacity:self.page]; for (int i = 0; i < self.page; ++i) { UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(i * self.frame.size.width, 0, self.frame.size.width, self.frame.size.height)]; imageView.contentMode = UIViewContentModeScaleAspectFit; [self.scrollView addSubview:imageView]; [self.imageViewArray addObject:imageView]; [imageView release], imageView = nil; } } for (int i = 0; i < self.page; ++i) { UIImageView *imageView = [self.imageViewArray objectAtIndex:i]; imageView.image = [UIImage imageNamed:[self.imageArray objectAtIndex:i]]; } } #pragma mark - setter & getter - (void)setImageArray:(NSArray *)imageArray { if (_imageArray == imageArray) { return ; } [_imageArray release]; _imageArray = imageArray; [_imageArray retain]; [self loadImage]; } #pragma mark - UIScrollView Delegate - (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGFloat pageWidth = scrollView.frame.size.width; int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1; self.pageControl.currentPage = page; } @end
使用方法如下:
CCImageScrollView *imageScrollView = [[CCImageScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 460) pageNum:5 pageEnabled:YES]; imageScrollView.imageArray = [NSArray arrayWithObjects:@"1.jpg", @"2.jpg", @"3.jpg", @"4.jpg", @"5.jpg", nil]; [self.view addSubview:imageScrollView]; [imageScrollView release], imageScrollView = nil;
备忘一下,以后有时间、需要,再扩展。
相关文章推荐
- 使用UIScrollView和UIPageControl实现一个简单的图片浏览功能
- iOS开发使用Picker View实现一个图片浏览的App
- 使用UIScrollView实现图片无限循环浏览
- Android 使用ViewPager结合PhotoView开源组件实现网络图片在线浏览功能
- Android 使用ViewPager结合PhotoView开源组件实现网络图片在线浏览功能
- iOS Webview使用js获取图url,实现图片浏览的功能
- UIScrollView和UIPageControl结合实现简单图片浏览
- [iOS]UIScrollView 与 UIPageControl实现简单相册功能
- iPhone开发之UIScrollView滚动组件的使用(七)利用NSTimer计时器和UIPageControl组件代码实现图片轮播器
- UI基础--使用UIScrollView、UIPageControl、NSTimer实现图片循环播放
- Android使用ViewPager、PhotoView实现类似QQ空间图片浏览功能
- 利用UIScrollView实现一个简单的图片轮播
- 简单图片浏览工具——ImageSwitcher:实现上一幅、下一幅切换功能
- 使用UIScrollView 结合 UIImageView 实现图片循环滚动
- 使用pipe实现一个简单的类似tee命令的功能
- UIScrollView控件实现图片缩放功能
- Android在打开一个新的Activity浏览大图时使用ImageView/PhotoView的时候图片显示在屏幕上部的问题
- Android之---RecycleView实现简单的图片查看功能(类似相册查看器)
- yii2.0使用插件实现一个简单的上传功能
- 基于ViewPager实现大量图片浏览功能