由于稍微累了,就直接贴粗糙实现的代码了(没有做一些边界检查等),算是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的简单应用以及一些非常基本的使用方法
上次上传的资源,现在才发现漏了说一点,要保证首尾两张的图片是同一张。。。。
基于UIScrollVIew 和UIPageControl的相册,相片可以放大缩小,当活动到其他页面,在返回时候放大或者缩小的相片恢复到原来的大小.
iOS UIScrollView and UIPageControl 导航控制器 demo
见标题,没有用到xib,开发环境是ios7
iOS基础——通过案例学知识之LaunchScreen、APPIcon、StatusBar、UIScrollView、UIPageControl
UIScrollView UIPageControl联合使用的demo,非常简单
UIScrollView代理触摸实现_图片缩放UIScrollView代理触摸实现_图片缩放
此时通常结合UIPageControl使用,UIPageControl控件会充当两个功能。 使用UIPageControl显示当前的UIScrollView正在显示第几页。 当用户点击UIPageControl控件时程序控制UIScrollView自动滚动到相应的页面。
UIScrollView+UIPageControl 核心步骤 在图片显示完全(endDecelerating)时,重新设置三个UIImageView的图片内容 调整UIScrollView的偏移量,始终显示中间的UIImageView 如有图片1、2、3、4、5,默认存放图片5、1、...
ios代码,可以根据博客来详细了解http://blog.csdn.net/u010335966/article/details/8832940
WJImageCycleSwiftDemo Swift版图片循环浏览:protocol,UIScrollView,UIPageControl,NSTimer,UIImageView ##效果图
scrollViewDemo中实现了以下功能: 1.自动滑动图片,UIPageControl会随着图片滑动而改变; 2.用户可以手动切换图片,左右切换均可,当用户手动滑动图片时,图片停止自动切换; 3.实现了图片的循环播放; 4....
iOS开发中使用UIScrollView实现图片轮播和点击加载共38页.pdf.zip
通过实现UISCrollview 代理方法来实现图片的浏览,及放大缩小。 使用方法: viewWillAppear中实现 showbigImage=[[ShowBigImageBox alloc]init]; [showbigImage setShowBigImageBoxDelegate:self]; ...
iOS开发中使用UIScrollView实现无限循环的图片浏览器共18页.pdf.zip
iOS:UIScrollView实现轮播,UIScrollView实现轮播,UIScrollView实现轮播
一个利用UIScrollView结合UIPageControl的小例子,可以实现以下功能: 1、滑动翻页效果,并对应下面UIPageConrol的点的状态; 2、滑动到两端时,可以继续循环滑动; 3、每个page页都可获取点击事件,以实现与主页面...