UIScrollView_UIPageControl

#import "MainViewController.h"

#define Screen_Width self.view.bounds.size.width

@interface MainViewController ()<UIScrollViewDelegate>

@property (nonatomic, assign)int flag; // 记录当前翻到了第几页

@property (nonatomic,retain) UIScrollView *scrollView;

@property (nonatomic,retain) UIPageControl *pageControl;


@end


@implementation MainViewController


- (void)dealloc

{


    [_scrollView release];

    [_pageControl release];

    [super dealloc];

}


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    

    self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(20, 20, 335, 500)];

    self.scrollView.backgroundColor = [UIColor yellowColor];

    [self.view addSubview:self.scrollView];

    [_scrollView release];

    

    

    // 如果滑动的页数是4

    NSInteger num = 4;

  

    for (NSInteger i = 0; i < num; i++) {

        

        //每次循环都创建一个imageView并且赋值

        UIScrollView *scrollView1 = [[UIScrollView alloc] initWithFrame:CGRectMake(i * 335, 0, 335, 500)];

        UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 335, 500)];

        NSString *name = [NSString stringWithFormat:@"baby%ld.jpg", i];

        imageView.image = [UIImage imageNamed:name];

        [scrollView1 addSubview:imageView];

        [self.scrollView addSubview:scrollView1];

        [scrollView1 release];

        [imageView release];

        scrollView1.delegate = self;

        scrollView1.maximumZoomScale = 2;

        scrollView1.minimumZoomScale = 0.5;

    }

    

    // 设置滚动的范围

    self.scrollView.contentSize = CGSizeMake(335 * 4, 0);

    self.scrollView.pagingEnabled = YES;

    self.scrollView.delegate = self;

    

    

    

    self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(20, 520, 335, 40)];

    self.pageControl.backgroundColor = [UIColor blackColor];

    

    // 设置点得数量

    self.pageControl.numberOfPages = num;

    

    // 设置点的颜色

    

    // 非当前选择的点的颜色

    self.pageControl.pageIndicatorTintColor = [UIColor greenColor];

    

    // 当前选择的点的颜色

    self.pageControl.currentPageIndicatorTintColor = [UIColor redColor];

    

    [self.pageControl addTarget:self action:@selector(pageAction:) forControlEvents:UIControlEventValueChanged];

    [self.view addSubview:self.pageControl];

    [_pageControl release];

    

}



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

{

    if (scrollView != _scrollView) {

        // 只有小scrollView才允许缩放

        return [scrollView.subviews firstObject];

    }else{

        return nil;

    }


}


//UIPageControl类型对象中调用的方法

- (void)pageAction:(UIPageControl *)pageC

{

    NSLog(@"换页");

    

    // 点击pageControl控制scrollView翻页

    

//    self.scrollView.contentOffset = CGPointMake(335 * pageC.currentPage, 0);

    

    [self.scrollView setContentOffset:CGPointMake(335 * pageC.currentPage, 0) animated:YES];

    

    

    

}


//使页面上点的变化与视图的变化一致

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

{


    if (_scrollView == scrollView) {

        int halfX = scrollView.frame.size.width / 2;

        _pageControl.currentPage = (scrollView.contentOffset.x - halfX) / (scrollView.frame.size.width) + 1;

    }

    //self.pageControl.currentPage = scrollView.contentOffset.x / 335;

    


}



-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

{


    if (_scrollView == scrollView) {

     // 方法1: 每次减速结束都让scollView所有的scrollView子视图缩放变为1

//        for (UIScrollView * scroll in scrollView.subviews) {

//            if ([scroll isKindOfClass:[UIScrollView class]]) {

//                scroll.zoomScale = 1.0;

//            }

//        }

        

        // 方法2: 每次减速结束, 如果当前的位置(currentPage)跟之前的位置(flag)不同, 让之前的小scrollView缩放变为1, 并且把 flag 更新为 当前的位置(currentPage)

        int index = _scrollView.contentOffset.x / Screen_Width;

        _pageControl.currentPage = index;

        if (index != _flag) {

            UIScrollView *tempScro = [_scrollView.subviews objectAtIndex:_flag];

            tempScro.zoomScale = 1.0;

            _flag = index;

        }


        

    }

    

    

    

}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值