06_无限滚动的相册

原创 2015年11月18日 21:17:20
#import "RootViewController.h"
#define HEIGHT self.view.frame.size.height
#define WIDTH  self.view.frame.size.width

@interface RootViewController ()<UIScrollViewDelegate>
@property(nonatomic, retain)UIScrollView *scrollView;
@property(nonatomic, retain)UIPageControl *page;
@end

@implementation RootViewController

- (void)dealloc
{
    [_scrollView release];
    [_page release];
    [super dealloc];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT)];
    self.scrollView.backgroundColor = [UIColor yellowColor];
    [self.view addSubview:self.scrollView];
    [self.scrollView release];
    // 移动的范围
    self.scrollView.contentSize = CGSizeMake(9 * WIDTH, 0);
    // 按页来滚动
    self.scrollView.pagingEnabled = YES;

    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 (NSInteger i = 1; i < 8; i++) {
        NSString *imageName = [NSString stringWithFormat:@"h%ld.jpeg", i];
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(WIDTH * i , 0, WIDTH, HEIGHT)];
        imageView.image = [UIImage imageNamed:imageName];

        [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;

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


//    // 关闭边界回弹效果
    self.scrollView.bounces = NO;
//
//    // 关闭水平的滚动条
//    self.scrollView.showsHorizontalScrollIndicator = NO;

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

    // 创建一个pageControl
    self.page = [[UIPageControl alloc] initWithFrame:CGRectMake(100, 600, 200, 40)];
    self.page.backgroundColor = [UIColor blueColor];
    [self.view addSubview:self.page];
    [_page release];
    self.page.numberOfPages = 7;
    // 设置未被点的颜色
    self.page.pageIndicatorTintColor = [UIColor yellowColor];
    // 当前点的颜色
    self.page.currentPageIndicatorTintColor = [UIColor redColor];


    [self.page addTarget:self action:@selector(pageAction:) forControlEvents:UIControlEventValueChanged];
    // 想要scrollView实现缩放功能,需要先设置最大最小的缩放比例
    self.scrollView.minimumZoomScale = 0.5;
    self.scrollView.maximumZoomScale = 2;

}
#pragma mark 这个方法用来管理scrollview的缩放功能
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{

    return [scrollView.subviews firstObject];
}

- (void)pageAction:(UIPageControl *)page
{
    // 还是设置偏移量
    NSLog(@"%ld", page.currentPage);
//    [self.scrollView setContentOffset:CGPointMake((page.currentPage + 1) * WIDTH, 0) animated:YES];


    [self.scrollView setContentOffset:CGPointMake(page.currentPage * WIDTH, 0)];
}

// 滑动结束之后,会触发的协议方法


- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    if (scrollView.contentOffset.x == WIDTH * 8) {
        scrollView.contentOffset = CGPointMake(WIDTH, 0);
    }else if (scrollView.contentOffset.x == 0 ) {
        scrollView.contentOffset = CGPointMake(7 * WIDTH, 0);
    }

    // pageControl和scrollView进行关联,点的移动方向和scrollView的偏移量有关
    // 无论怎么方向滑动,当pageControl和scrollview关联的时候,偏移量都是修改好的,所以可以正确的滚动和显示
    self.page.currentPage = scrollView.contentOffset.x / WIDTH - 1;

}
...

@end

相关文章推荐

UI06_无限滚动的相册

UIScrollView

UI_无限滚动相册

UI_无限滚动相册

图片无限滚动

  • 2014年04月26日 16:52
  • 295KB
  • 下载

Unity3d学习笔记-无限循环滚动背景(完整的商店广告牌组件)

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...

无限滚动的pikerView

  • 2015年03月25日 18:24
  • 47KB
  • 下载

Unity3D-UGUI无限滚动加载TableView列表

本站文章转载务必在明显处注明:原文链接 http://blog.csdn.net/cjsen/article/details/52487706 前言 在UGUI中并没有自带类似cocos2d-x里...
  • CJsen
  • CJsen
  • 2016年09月09日 17:44
  • 4185

无限滚动TableView示例

  • 2016年09月09日 18:18
  • 9KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:06_无限滚动的相册
举报原因:
原因补充:

(最多只允许输入30个字)