图片浏览器的初级制作:UIScrollView UIPageControl

#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上;

     2scrollview本身自带缩放功能,图片的大小想要依赖于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];

    

    //scrollViewframe contentSize的区别:

    /*

     1framescrollViewframe能够显示的大小;

     2contentSizescrollViewframe里内容的大小;

     3frame的大小决定了你能看到的内容的大小;

     

     */

    

    //创建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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值