iOS 无线滚动相册之scrollView

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

- (void)viewDidLoad {
    [super viewDidLoad];
    self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT)];
    self.scrollView.backgroundColor = [UIColor cyanColor];
    [self.view addSubview:self.scrollView];
    [_scrollView release];


    // 移动的范围
    self.scrollView.contentSize = CGSizeMake(WIDTH * 9, 0);
    // pagingEnabled 一个布尔值,该值决定是否启用滚动视图的分页。
    self.scrollView.pagingEnabled = YES;

    //  关闭边界回弹效果
    self.scrollView.bounces = NO;
    // 关闭水平滑动条
    self.scrollView.showsHorizontalScrollIndicator = NO;
    // 关闭垂直滑动条
    self.scrollView.showsVerticalScrollIndicator = NO;

    // 创建一个imageView放在scrollView上
    UIImageView *firstImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT)];
    firstImageView.image = [UIImage imageNamed:@"h7.jpeg"];
    [self.scrollView addSubview:firstImageView];
    [firstImageView release];
    firstImageView.userInteractionEnabled = YES;


    // 通过一个for循环, 把1 到 7 的视图创建出来
    for (NSInteger i = 1; i < 8; i++) {
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(i * WIDTH, 0, WIDTH, HEIGHT)];
        imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"h%ld.jpeg", i]];
        [self.scrollView addSubview:imageView];
        [imageView release];
        imageView.userInteractionEnabled = YES;
    }

    // 在最后加上一个视图, 放在最后, 显示第一张图片
    UIImageView *lastImageView = [[UIImageView alloc] initWithFrame:CGRectMake(8 * WIDTH, 0, WIDTH, HEIGHT)];
    lastImageView.image = [UIImage imageNamed:@"h1.jpeg"];
    [self.scrollView addSubview:lastImageView];
    [lastImageView release];
    lastImageView.userInteractionEnabled = YES;




    // 为了能显示第一张图片, 我们需要先设置一个偏移量, 这样能直接显示Nico Robin 的第一张图片
    self.scrollView.contentOffset = CGPointMake(WIDTH, 0);

    // 设置代理人
    self.scrollView.delegate = self;


    // 创建一个pageControl
    self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 630, 375,50)];
    self.pageControl.backgroundColor = [UIColor clearColor];
    [self.view addSubview:self.pageControl];
    [_pageControl release];
    // 设置当前pageControl 的点的个数
    self.pageControl.numberOfPages = 7;
    // 没有被点击的点的颜色
    self.pageControl.pageIndicatorTintColor = [UIColor redColor];
    // 当前点的颜色
    self.pageControl.currentPageIndicatorTintColor = [UIColor greenColor];
    //
    [self.pageControl addTarget:self action:@selector(pageControlAction:) forControlEvents:UIControlEventValueChanged];
    // 想要scrollView实现缩放功能, 需要先设置最大最小的缩放比例
    self.scrollView.minimumZoomScale = 0.1;
    self.scrollView.maximumZoomScale = 3;


}

#pragma mark 这个方法用来关联scrollView的缩放功能
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return [scrollView.subviews firstObject];
}




- (void)pageControlAction:(UIPageControl *)page {
    [self.scrollView setContentOffset:CGPointMake((page.currentPage + 1) * WIDTH, 0) animated:YES];
}



// 滑动结束, 触发的协议方法
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    if (self.scrollView.contentOffset.x == 8 * WIDTH) {
        self.scrollView.contentOffset = CGPointMake(WIDTH, 0);
    } else if (self.scrollView.contentOffset.x == 0) {
        self.scrollView.contentOffset = CGPointMake(7 * WIDTH, 0);
    }
    // pageControl 和 scrollView 进行关联, 点的移动方向和scrollView的偏移量
    // 无论怎么按什么方向滑动, 当pageContrl 和 scrollView关联的时候, 偏移量都是修改好的, 所以可以正确地滚动和显示
    self.pageControl.currentPage = scrollView.contentOffset.x / WIDTH - 1;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值