使用UIScrollView和UIPageControl实现一个简单的图片浏览功能
2013-12-06 15:29
701 查看
由于稍微累了,就直接贴粗糙实现的代码了(没有做一些边界检查等),算是backup。
[cpp] view
plaincopy
//
// 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
[cpp] view
plaincopy
//
// 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
使用方法如下:
[cpp] view
plaincopy
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;
[cpp] view
plaincopy
//
// 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
[cpp] view
plaincopy
//
// 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
使用方法如下:
[cpp] view
plaincopy
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实现一个简单的图片浏览功能
- 使用UIScrollView实现图片无限循环浏览
- Android 使用ViewPager结合PhotoView开源组件实现网络图片在线浏览功能
- Android 使用ViewPager结合PhotoView开源组件实现网络图片在线浏览功能
- UIScrollView和UIPageControl结合实现简单图片浏览
- [iOS]UIScrollView 与 UIPageControl实现简单相册功能
- iPhone开发之UIScrollView滚动组件的使用(七)利用NSTimer计时器和UIPageControl组件代码实现图片轮播器
- UI基础--使用UIScrollView、UIPageControl、NSTimer实现图片循环播放
- iOS Webview使用js获取图url,实现图片浏览的功能
- Android使用ViewPager、PhotoView实现类似QQ空间图片浏览功能
- 利用UIScrollView实现一个简单的图片轮播
- iOS开发使用Picker View实现一个图片浏览的App
- iOS开发UI篇—UIScrollView控件实现图片缩放功能
- 10.5 UIScrollview概念和用法:实现简单的相册功能
- 基于ViewPager实现大量图片浏览功能
- iOS开发UI篇—UIScrollView控件实现图片缩放功能
- 一个使用监听器模式实现的J2ME网络编程框架,包括一个简单的登录功能实现(含源代码)
- android stutio 使用viewpager创建一个滑动图片浏览app
- 使用UIScrollView 结合 UIImageView 实现图片循环滚动
- XRecyclerView的简单使用与图片拉动字体缩放效果的实现