iOS之OC源码相册循环查看图片功能的实现
来源:互联网 发布:电信光猫网络不稳定 编辑:程序博客网 时间:2024/06/01 17:31
#import "ViewController.h"#import "YZUIScrollView.h"#define kuan ([UIScreen mainScreen].bounds.size.width+20)#define gao [UIScreen mainScreen].bounds.size.height@interface ViewController ()<UIScrollViewDelegate>@property (weak, nonatomic) IBOutlet UIScrollView *huaBu;@property(nonatomic,strong)NSArray *images;@property(nonatomic)NSInteger currentIndex;@end@implementation ViewController//懒加载,调用get方法时对属性进行初始化-(NSArray *)images{ if(_images==nil) { NSMutableArray *imagearray=[NSMutableArray array]; for (int i=1; i<7; i++) { NSString *imageName=[NSString stringWithFormat:@"new_feature_%d",i]; UIImage *image=[UIImage imageNamed:imageName]; [imagearray addObject:image]; } _images=imagearray; } return _images;}- (void)viewDidLoad { [super viewDidLoad]; //设置UIScrollView的contentSize _huaBu.contentSize=CGSizeMake(kuan*3, gao); //设置分页 _huaBu.pagingEnabled=YES; //隐藏水平滚动栏和垂直滚动栏 _huaBu.showsHorizontalScrollIndicator=NO; _huaBu.showsVerticalScrollIndicator=NO; //设置背景颜色,突出不同的图片 _huaBu.backgroundColor=[UIColor blackColor]; //设置代理要遵守协议<UIScrollViewDelegate> _huaBu.delegate=self; //调用方法添加子视图 [self tianJiaZiShiTu]; //调用方法添加图片 [self tianJiaTuPian];}//添加子视图的方法-(void)tianJiaZiShiTu{ //相册的话,是一个大的UIScrollView中放了很多的小UIScrollView,但是为了节省内存空间,所以只是添加了三个UIScrollView(图片不停的变换位置) for (int i=0; i<3; i++) { //创建YZUIScrollView YZUIScrollView * yzuisv=[[YZUIScrollView alloc] initWithFrame:CGRectMake(kuan*i, 0, kuan-20, gao)]; //添加YZUIScrollView [_huaBu addSubview:yzuisv]; //设置tag值,便于区分 yzuisv.tag=1000+i; }}//添加方法的图片-(void)tianJiaTuPian{ YZUIScrollView *leftSC=(YZUIScrollView *)[_huaBu viewWithTag:1000]; YZUIScrollView *middleSC=(YZUIScrollView *)[_huaBu viewWithTag:1001]; YZUIScrollView *rightSC=(YZUIScrollView *)[_huaBu viewWithTag:1002]; leftSC.image=self.images[[self indexFofEnable:_currentIndex-1]]; middleSC.image=self.images[[self indexFofEnable:_currentIndex]]; rightSC.image=self.images[[self indexFofEnable:_currentIndex+1]]; //设置偏移量,这步很重要 _huaBu.contentOffset=CGPointMake(kuan, 0);}//确保索引可用-(NSInteger)indexFofEnable:(NSInteger)index{ if(index<0) { return self.images.count-1; } else if (index>self.images.count-1) { return 0; } else return index;}//滚动结束后,把所有的缩放视图比例还原为1.0-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ for (id obj in _huaBu.subviews) { if([obj isKindOfClass:[UIScrollView class]]) { UIScrollView *scaleSC=(UIScrollView *)obj; scaleSC.zoomScale=1.0; } } //判断左右滑动 //偏移量的x为0,就是说明向右滑动了,就是看的之前左边的那张图片 if(scrollView.contentOffset.x==0) { //对应的图像应该是变成左边的图像 _currentIndex--; } //偏移量的x为两个屏幕的宽,就是说明向左滑动了,就是看的之前右边的那张图片 else if(scrollView.contentOffset.x== kuan*2) { //对应的图像应该是变成右边的图像 _currentIndex++; } _currentIndex=[self indexFofEnable:_currentIndex]; [self tianJiaTuPian];}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end
<pre name="code" class="objc">//第二个类#import "YZUIScrollView.h"@interface YZUIScrollView ()<UIScrollViewDelegate>@property(nonatomic,strong)UIImageView *imageview;@property(nonatomic,strong)UIImage *image;//内容视图的图片@end@implementation YZUIScrollView-(instancetype)initWithFrame:(CGRect)frame{ if(self =[super initWithFrame:frame]) { //添加内容视图 UIImageView *imageview1=[[UIImageView alloc] initWithFrame:self.bounds]; [self addSubview:imageview1]; _imageview=imageview1; //设置最大最小倍数和代理 self.minimumZoomScale=0.5; self.maximumZoomScale=1.5; self.delegate=self; //双击事件 UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(shuangJi:)]; tap.numberOfTapsRequired=2; [self addGestureRecognizer:tap]; } return self;}-(void)shuangJi:(UITapGestureRecognizer *)tap{ //当缩放比例不为1.0,还原缩放比例 if (self.zoomScale !=1.0) { [self setZoomScale:1.0 animated:YES]; return ; } CGPoint location =[tap locationInView:self]; CGRect rect =CGRectMake(location.x-100, location.y-100,200,200); [self zoomToRect:rect animated:YES];}//重写setImg方法-(void)setImage:(UIImage *)image{ //set本身的方法要完成的事必须完成 _image=image; //设置内容视图的图片 _imageview.image=image;}//UIScrollViewDelegate代理方法-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{ return _imageview;}@end
0 0
- iOS之OC源码相册循环查看图片功能的实现
- Android之---RecycleView实现简单的图片查看功能(类似相册查看器)
- iOS,源码,相册,不能实现循环播放
- ios开发技巧之:相册功能的实现
- iOS开发-OC之图片保存到相册
- ALAssetsLibrary类实现查看相册列表,增加相册,保存图片到相册等功能
- 实现相册的缩放图片功能
- iOS开发相册功能的实现
- ios添加删除查看相册或拍照图片实现
- ViewDragHelper实现相册图片查看
- android实现图片相册功能
- iOS 相册备份功能实现
- 04-UIScrollView分页功能实现循环查看图片
- 图片拍照或相册选择的实现以及裁剪功能
- 图片左右循环切换功能的实现
- iOS 拍照及获取相册图片功能
- iOS仿探探六宫格相册的实现,带添加和删除功能
- oc获取相册源码
- BZOJ 1270: [BeijingWc2008]雷涛的小猫|动态规划
- 通过反射获取泛型(待编辑)
- Buildings
- Android 自定义View (二) 进阶
- Android 自定义View (三) 圆环交替 等待效果
- iOS之OC源码相册循环查看图片功能的实现
- 中在eclipse下如何将程序打成jar包
- Quicksum
- Android 自定义View (四) 视频音量调控
- 软件测试_JMeter自动化测试工具1_JMeter简介
- 【杭电oj】1091 - A+B for Input-Output Practice (III)(注意0,0结束输出)
- Android 屏幕适配方案
- 神经网络
- 【2016新年版】年度精品 XP,32/64位Win7,32/64位Win8,32/64位Win10系统