图片浏览器的初级制作:UIScrollView UIPageControl
2015-12-09 10:52
344 查看
#import "MangoView.h"
//设置宽和高的宏定义
#define KWH self.frame.size.width
#define KHG self.frame.size.height
@interface MangoView()
@property(nonatomic,
retain) UIScrollView *scrollView;
@property(nonatomic,
retain) UIPageControl *pageControl;
@end
@implementation MangoView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super
initWithFrame:frame];
if (self) {
[self
loginCustonView];
}
return
self;
}
-(void)loginCustonView{
//初始化设置大小ScrollView(图片浏览器)
self.scrollView = [[UIScrollView
alloc] initWithFrame:self.frame];
//设置ScrollView的背景颜色;
self.backgroundColor = [UIColor
cyanColor];
//当contentSize大于ScrollView.frame,时就可以滑动;如果只有宽度大于ScrollView的宽度,就可以左右移动,大于高度就可以上下移动;
//图片浏览器的设计思路
/*
1、图片如果想要滑动,那么需要把图片添加到scrollview上;
2、scrollview本身自带缩放功能,图片的大小想要依赖于scrollview的放大缩小;
3、把所有的题片都添加到scrollview上,scrollview的放大缩小是整个大的scrollview。而不是每张图片放大缩小,不满足要求;
4、把每张图片都添加到一个scrollview上,这样每个图片都实现了缩小放大的功能。同时有一个问题,如何让这些图片能放大缩小来回滚动?
5、把加载每张图片的scrollview添加到一个大的scrollview上,就能实现滑动效果;
*/
for (int i =
1; i < 8; i++) {
NSString *ima = [NSString
stringWithFormat:@"%d.jpg",i];
UIImageView *imageview1 = [[UIImageView
alloc] initWithFrame:CGRectMake(0,
0, KWH,
KHG)];
UIScrollView *scrollView1 = [[UIScrollView
alloc]initWithFrame:CGRectMake(KWH * (i-1),
0, KWH,
KHG)];
//最小缩小比例;
scrollView1.minimumZoomScale =
0.5;
//最大放大比例;
scrollView1.maximumZoomScale =
2.0;
scrollView1.delegate =
self;
//把每一张图片的scrollView添加到大的scollview中;
imageview1.tag =
110;
imageview1.image = [UIImage
imageNamed:ima];
[scrollView1 addSubview:imageview1];
[self.scrollView
addSubview:scrollView1];
[imageview1 release];
}
//滑动到顶部,只有在竖屏的情况下才会显示效果
self.scrollView.scrollsToTop
= YES;
//是否整屏滑动,默认值为NO;
self.scrollView.pagingEnabled
= YES;
//遇到边界是否可以弹回,默认yes是滑动到边界还可以继续滑动,但是松手的时候还是可以继续续弹回,如果NO滑动到边界就停止,边界无法滑动;
self.scrollView.bounces =
YES;
//是否可以滑动,no是不可以;
self.scrollView.scrollEnabled
= YES;
//是否显示水平方向滚动条;
self.scrollView.showsHorizontalScrollIndicator
= NO;
//是否显示竖直方向滚动条
self.scrollView.showsVerticalScrollIndicator
= NO;
//内容的大小如果小于scrollView的时候仍然可以左右滑动边界;
self.scrollView.alwaysBounceHorizontal
= NO;
self.scrollView.alwaysBounceVertical
= NO;
//设置代理;
self.scrollView.delegate =
self;
//scrollView的宽度;
self.scrollView.contentSize =
CGSizeMake(KWH *
7, KHG);
//将ScrollView添加到视图
[self
addSubview:self.scrollView];
//释放ScrollView
[self.scrollView
release];
//scrollView的frame
和 contentSize的区别:
/*
1、frame是scrollView的frame能够显示的大小;
2、contentSize是scrollView的frame里内容的大小;
3、frame的大小决定了你能看到的内容的大小;
*/
//创建PageControl;
self.pageControl = [[UIPageControl
alloc] initWithFrame:CGRectMake(0,
KHG -
80, KWH,
30)];
//设置PageControl的个数
self.pageControl.numberOfPages
= 7;
//未选中的颜色
self.pageControl.pageIndicatorTintColor
= [UIColor
grayColor];
//当前的颜色;
self.pageControl.currentPageIndicatorTintColor
= [UIColor
greenColor];
[self.pageControl
addTarget:self
action:@selector(pageSelectAction:)
forControlEvents:UIControlEventValueChanged];
[self
addSubview:self.pageControl];
[self.pageControl
release];
}
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
CGFloat pageWidth =
self.frame.size.width;
//contentOffset,是当前scrollView距离远点偏移的位置
//获取scrollView停止时的偏移量;
CGPoint offset =
self.scrollView.contentOffset;
//通过偏移量和页面宽度计算出当前页数;
NSInteger pageNum = offset.x / pageWidth;
//修改当前页;
self.pageControl.currentPage = pageNum;
}
-(void)dealloc{
[_scrollView
release];
[_pageControl
release];
[super
dealloc];
}
//改变图片大小的方法
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
//在scollView上通过tag值
UIImageView *zoomImageView = (UIImageView *)
[scrollView viewWithTag:110];
return zoomImageView;
}
//让scrollView的页面跟随pageControl的点击
-(void)pageSelectAction:(UIPageControl *)pageControl{
//获取pageControl点击的页面在第几页;
NSInteger pageNum = pageControl.currentPage;
//第二步,获取页面的宽度:
CGFloat pageWidth =
self.scrollView.frame.size.width;
//让scrollView滚动到第几页;
self.scrollView.contentOffset =
CGPointMake(pageNum * pageWidth,
0);
}
@end
//设置宽和高的宏定义
#define KWH self.frame.size.width
#define KHG self.frame.size.height
@interface MangoView()
@property(nonatomic,
retain) UIScrollView *scrollView;
@property(nonatomic,
retain) UIPageControl *pageControl;
@end
@implementation MangoView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super
initWithFrame:frame];
if (self) {
[self
loginCustonView];
}
return
self;
}
-(void)loginCustonView{
//初始化设置大小ScrollView(图片浏览器)
self.scrollView = [[UIScrollView
alloc] initWithFrame:self.frame];
//设置ScrollView的背景颜色;
self.backgroundColor = [UIColor
cyanColor];
//当contentSize大于ScrollView.frame,时就可以滑动;如果只有宽度大于ScrollView的宽度,就可以左右移动,大于高度就可以上下移动;
//图片浏览器的设计思路
/*
1、图片如果想要滑动,那么需要把图片添加到scrollview上;
2、scrollview本身自带缩放功能,图片的大小想要依赖于scrollview的放大缩小;
3、把所有的题片都添加到scrollview上,scrollview的放大缩小是整个大的scrollview。而不是每张图片放大缩小,不满足要求;
4、把每张图片都添加到一个scrollview上,这样每个图片都实现了缩小放大的功能。同时有一个问题,如何让这些图片能放大缩小来回滚动?
5、把加载每张图片的scrollview添加到一个大的scrollview上,就能实现滑动效果;
*/
for (int i =
1; i < 8; i++) {
NSString *ima = [NSString
stringWithFormat:@"%d.jpg",i];
UIImageView *imageview1 = [[UIImageView
alloc] initWithFrame:CGRectMake(0,
0, KWH,
KHG)];
UIScrollView *scrollView1 = [[UIScrollView
alloc]initWithFrame:CGRectMake(KWH * (i-1),
0, KWH,
KHG)];
//最小缩小比例;
scrollView1.minimumZoomScale =
0.5;
//最大放大比例;
scrollView1.maximumZoomScale =
2.0;
scrollView1.delegate =
self;
//把每一张图片的scrollView添加到大的scollview中;
imageview1.tag =
110;
imageview1.image = [UIImage
imageNamed:ima];
[scrollView1 addSubview:imageview1];
[self.scrollView
addSubview:scrollView1];
[imageview1 release];
}
//滑动到顶部,只有在竖屏的情况下才会显示效果
self.scrollView.scrollsToTop
= YES;
//是否整屏滑动,默认值为NO;
self.scrollView.pagingEnabled
= YES;
//遇到边界是否可以弹回,默认yes是滑动到边界还可以继续滑动,但是松手的时候还是可以继续续弹回,如果NO滑动到边界就停止,边界无法滑动;
self.scrollView.bounces =
YES;
//是否可以滑动,no是不可以;
self.scrollView.scrollEnabled
= YES;
//是否显示水平方向滚动条;
self.scrollView.showsHorizontalScrollIndicator
= NO;
//是否显示竖直方向滚动条
self.scrollView.showsVerticalScrollIndicator
= NO;
//内容的大小如果小于scrollView的时候仍然可以左右滑动边界;
self.scrollView.alwaysBounceHorizontal
= NO;
self.scrollView.alwaysBounceVertical
= NO;
//设置代理;
self.scrollView.delegate =
self;
//scrollView的宽度;
self.scrollView.contentSize =
CGSizeMake(KWH *
7, KHG);
//将ScrollView添加到视图
[self
addSubview:self.scrollView];
//释放ScrollView
[self.scrollView
release];
//scrollView的frame
和 contentSize的区别:
/*
1、frame是scrollView的frame能够显示的大小;
2、contentSize是scrollView的frame里内容的大小;
3、frame的大小决定了你能看到的内容的大小;
*/
//创建PageControl;
self.pageControl = [[UIPageControl
alloc] initWithFrame:CGRectMake(0,
KHG -
80, KWH,
30)];
//设置PageControl的个数
self.pageControl.numberOfPages
= 7;
//未选中的颜色
self.pageControl.pageIndicatorTintColor
= [UIColor
grayColor];
//当前的颜色;
self.pageControl.currentPageIndicatorTintColor
= [UIColor
greenColor];
[self.pageControl
addTarget:self
action:@selector(pageSelectAction:)
forControlEvents:UIControlEventValueChanged];
[self
addSubview:self.pageControl];
[self.pageControl
release];
}
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
CGFloat pageWidth =
self.frame.size.width;
//contentOffset,是当前scrollView距离远点偏移的位置
//获取scrollView停止时的偏移量;
CGPoint offset =
self.scrollView.contentOffset;
//通过偏移量和页面宽度计算出当前页数;
NSInteger pageNum = offset.x / pageWidth;
//修改当前页;
self.pageControl.currentPage = pageNum;
}
-(void)dealloc{
[_scrollView
release];
[_pageControl
release];
[super
dealloc];
}
//改变图片大小的方法
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
//在scollView上通过tag值
UIImageView *zoomImageView = (UIImageView *)
[scrollView viewWithTag:110];
return zoomImageView;
}
//让scrollView的页面跟随pageControl的点击
-(void)pageSelectAction:(UIPageControl *)pageControl{
//获取pageControl点击的页面在第几页;
NSInteger pageNum = pageControl.currentPage;
//第二步,获取页面的宽度:
CGFloat pageWidth =
self.scrollView.frame.size.width;
//让scrollView滚动到第几页;
self.scrollView.contentOffset =
CGPointMake(pageNum * pageWidth,
0);
}
@end
相关文章推荐
- 获取checkbox的多选value值拼成字符串
- Arduino - 超声波测距
- 项目管理实践【五】自动编译和发布网站【Using Visual Studio with Source Control System to build and publish website automatically】
- 项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】
- Android 高级UI设计笔记08:Android开发者常用的7款Android UI组件(转载)
- zzulioj 1818: squee_spoon and his Cube VI (KMP求最长字符串) 好题
- 在iOS 8中使用UIAlertController
- 阿里巴巴开源项目 Druid
- java生成短8位uuid
- iOS_UITextView _ 链接地址在应用程序内跳转 _ 占位符 _ 改变选中文本的属性
- Block学习一门:基本使用,使用block包NSURLRequest异步请求
- Errors running builder "Integrated External Tool Builder" on project
- easyui分页显示本地log4j文件+文件下载+打包下载
- 获取properties中的 value
- Java 中 StringBuilder 在高性能用法总结
- Arduino - 315/433MHz RF无线收发模块
- weblogic10异常:org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.
- serialVersionUID的作用
- Java-构建器模式(Buider模式)
- 自动取款机 UI开发总结