UIPageControl 与 UIScrollView

#import "MainViewController.h"
#define WIDTH self.view.frame.size.width
#define HEIGHT self.view.frame.size.height
@interface MainViewController ()<UIScrollViewDelegate>
@property(nonatomic, retain)UIScrollView *scrollView;

@end

@implementation MainViewController
- (void)dealloc{
    [_scrollView release];
    [super dealloc];
}


- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
 // 创建可以播放图片的ScrollView   
    self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT - 40)];
    self.scrollView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"222.jpg"]];
    [self.view addSubview:self.scrollView];
    [_scrollView release];
    self.scrollView.pagingEnabled = YES;
    self.scrollView.contentSize = CGSizeMake(WIDTH * 10, HEIGHT - 40);

    for (NSInteger i = 1; i < 11; i++) {
        NSString *picName = [NSString stringWithFormat:@"%ld.jpg",i];
        UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:picName]];
        imageView.frame = CGRectMake(WIDTH * (i - 1), 0, WIDTH, HEIGHT - 40);
        [self.scrollView addSubview:imageView];
        [imageView release];
    }
    self.scrollView.delegate = self;
    // scrollView 的缩放,坑爹的地方:缩放之后就不能再进行滚动了/
    // 设置缩放的比例
    //最大缩放比例
    self.scrollView.maximumZoomScale = 2;
    // 最小缩放比例
    self.scrollView.minimumZoomScale = 0.5;
    //对它缩放的原始比例
    self.scrollView.zoomScale = 1;

// 创建UIPageControl    
    UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, HEIGHT - 40, WIDTH, 40)];
    [self.view addSubview:pageControl];
    pageControl.backgroundColor = [UIColor blackColor];
    [pageControl release];
    // 其他设置:
    // 图片个数和点的个数相同.
    pageControl.numberOfPages = 10;
    // 其余圆点的颜色
    pageControl.pageIndicatorTintColor = [UIColor redColor];
    // 被选中点的颜色
    pageControl.currentPageIndicatorTintColor = [UIColor cyanColor];

// 继承于UIControl,所以有点击方法.
    [pageControl addTarget:self action:@selector(pageAction:) forControlEvents:UIControlEventValueChanged];
    pageControl.tag = 1000;
}

// UIPageControl 的点击方法实现
#pragma mark 让点击UIPageControl左右侧的时候,图片变换
- (void)pageAction:(UIPageControl *)page{
    // 点从第0个开始算.
    NSLog(@"%ld",page.currentPage);

   // 下面这个方式书写没有动画效果 
//self.scrollView.contentOffset = CGPointMake(page.currentPage * WIDTH, 0);
    // 有动画效果/
    [self.scrollView setContentOffset:CGPointMake(page.currentPage * WIDTH, 0) animated:YES];
}

#pragma mark 变换图片的时候,让点也跟着变
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    UIPageControl *page = (UIPageControl *)[self.view viewWithTag:1000];
    page.currentPage = self.scrollView.contentOffset.x/WIDTH;
}

#pragma mark 专门用于缩放的协议方法的实现. 坏处是无法恢复到原来图片大小.不建议使用.
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
    return [scrollView.subviews firstObject];
}

效果如下图, 只能在重新运行模拟器….
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值