iOS之OC源码,相册循环查看功能的实现


网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、成都小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了玉州免费建站欢迎大家使用!

#import"ViewController.h"

#import"YZUIScrollView.h"

#define kuan ([UIScreen mainScreen].bounds.size.width+20)

#define gao [UIScreen mainScreen].bounds.size.height

@interfaceViewController ()<UIScrollViewDelegate>

@property (weak,nonatomic)IBOutletUIScrollView *huaBu;

@property(nonatomic,strong)NSArray *images;

@property(nonatomic)NSInteger currentIndex;

@end

@implementation ViewController

//懒加载,调用get方法时对属性进行初始化

-(NSArray *)images

{

   if(_images==nil)

    {

       NSMutableArray *imagearray=[NSMutableArrayarray];

       for (int i=1; i<7; i++) {

           NSString *imageName=[NSStringstringWithFormat:@"new_feature_%d",i];

           UIImage *image=[UIImageimageNamed:imageName];

            [imagearrayaddObject:image];

        }

       _images=imagearray;

    }

   return_images;

}

- (void)viewDidLoad {

    [superviewDidLoad];

   //设置UIScrollView的contentSize

   _huaBu.contentSize=CGSizeMake(kuan*3,gao);

   //设置分页

   _huaBu.pagingEnabled=YES;

   //隐藏水平滚动栏和垂直滚动栏

   _huaBu.showsHorizontalScrollIndicator=NO;

   _huaBu.showsVerticalScrollIndicator=NO;

   //设置背景颜色,突出不同的图片

   _huaBu.backgroundColor=[UIColorblackColor];

   //设置代理要遵守协议<UIScrollViewDelegate>

   _huaBu.delegate=self;

   //调用方法添加子视图

    [selftianJiaZiShiTu];

   //调用方法添加图片

    [selftianJiaTuPian];

}

//添加子视图的方法

-(void)tianJiaZiShiTu

{

   //相册的话,是一个大的UIScrollView中放了很多的小UIScrollView,但是为了节省内存空间,所以只是添加了三个UIScrollView(图片不停的变换位置)

   for (int i=0; i<3; i++) {

       //创建YZUIScrollView

       YZUIScrollView * yzuisv=[[YZUIScrollViewalloc]initWithFrame:CGRectMake(kuan*i, 0,kuan-20,gao)];

       //添加YZUIScrollView

        [_huaBuaddSubview:yzuisv];

       //设置tag值,便于区分

        yzuisv.tag=1000+i;

    }

}

//添加方法的图片

-(void)tianJiaTuPian

{

   YZUIScrollView *leftSC=(YZUIScrollView *)[_huaBuviewWithTag:1000];

   YZUIScrollView *middleSC=(YZUIScrollView *)[_huaBuviewWithTag:1001];

   YZUIScrollView *rightSC=(YZUIScrollView *)[_huaBuviewWithTag:1002];

    leftSC.image=self.images[[selfindexFofEnable:_currentIndex-1]];

    middleSC.image=self.images[[selfindexFofEnable:_currentIndex]];

    rightSC.image=self.images[[selfindexFofEnable:_currentIndex+1]];

   //设置偏移量,这步很重要

   _huaBu.contentOffset=CGPointMake(kuan, 0);

}

//确保索引可用

-(NSInteger)indexFofEnable:(NSInteger)index

{

   if(index<0)

    {

       returnself.images.count-1;

    }

   elseif (index>self.images.count-1)

    {

       return 0;

    }

   else

       return index;

}

//滚动结束后,把所有的缩放视图比例还原为1.0

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

{

   for (id objin_huaBu.subviews) {

       if([objisKindOfClass:[UIScrollViewclass]])

        {

           UIScrollView *scaleSC=(UIScrollView *)obj;

            scaleSC.zoomScale=1.0;

        }

    }

   //判断左右滑动

   //偏移量的x为0,就是说明向右滑动了,就是看的之前左边的那张图片

   if(scrollView.contentOffset.x==0)

    {

       //对应的图像应该是变成左边的图像

       _currentIndex--;

    }

   //偏移量的x为两个屏幕的宽,就是说明向左滑动了,就是看的之前右边的那张图片

   elseif(scrollView.contentOffset.x==kuan*2)

    {

       //对应的图像应该是变成右边的图像

       _currentIndex++;

    }

   _currentIndex=[selfindexFofEnable:_currentIndex];

    [selftianJiaTuPian];

}

- (void)didReceiveMemoryWarning {

    [superdidReceiveMemoryWarning];

   // Dispose of any resources that can be recreated.

}

@end

//第二个类

#import"YZUIScrollView.h"

@interfaceYZUIScrollView ()<UIScrollViewDelegate>

@property(nonatomic,strong)UIImageView *imageview;

@property(nonatomic,strong)UIImage *image;//内容视图的图片

@end

@implementation YZUIScrollView

-(instancetype)initWithFrame:(CGRect)frame

{

   if(self =[superinitWithFrame:frame])

    {

       //添加内容视图

       UIImageView *imageview1=[[UIImageViewalloc]initWithFrame:self.bounds];

        [selfaddSubview:imageview1];

       _imageview=imageview1;

       //设置最大最小倍数和代理

       self.minimumZoomScale=0.5;

       self.maximumZoomScale=1.5;

       self.delegate=self;

       //双击事件

       UITapGestureRecognizer *tap=[[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(shuangJi:)];

        tap.numberOfTapsRequired=2;

        [selfaddGestureRecognizer:tap];

    }

   returnself;

}

-(void)shuangJi:(UITapGestureRecognizer *)tap

{

   //当缩放比例不为1.0,还原缩放比例

   if (self.zoomScale !=1.0) {

        [selfsetZoomScale:1.0animated:YES];

       return ;

    }

   CGPoint location =[taplocationInView:self];

   CGRect rect =CGRectMake(location.x-100, location.y-100,200,200);

    [selfzoomToRect:rectanimated:YES];

}

//重写setImg方法

-(void)setImage:(UIImage *)image

{

   //set本身的方法要完成的事必须完成

   _image=image;

   //设置内容视图的图片

   _imageview.image=image;

}

//UIScrollViewDelegate代理方法

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

{

   return_imageview;

}

@end

网页名称:iOS之OC源码,相册循环查看功能的实现
当前链接:https://www.cdcxhl.com/article18/pieedp.html

成都网站建设公司_创新互联,为您提供响应式网站域名注册企业建站品牌网站建设品牌网站设计定制开发

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

微信小程序开发