5.4 UIScrollView 滚动视图 相册简单版

2019-04-16  本文已影响0人  草根小强

UIScrollView 滚动视图 相册简单版1

#import "ViewController.h"

#define SCREEN_SIZE [[UIScreen mainScreen] bounds].size

@interface ViewController () <UIScrollViewDelegate>

@end

@implementation ViewController {
    UIScrollView * _scrollView;
    //PageControl
    UIPageControl * _pageControl;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    //1.创建滚动视图,设置滚动视图
    [self createScrollView];
    //2.添加子视图
    [self addSubViews];
    
    //显示第三张
    [_scrollView setContentOffset:CGPointMake(2 * SCREEN_SIZE.width, 0) animated:YES];
    
    //3.创建PageControl
    [self createPageControl];
}

- (void)createScrollView {
    _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_SIZE.width, SCREEN_SIZE.height)];
    //设置代理
    _scrollView.delegate = self;
    //按页滚动
    _scrollView.pagingEnabled = YES;
    //隐藏纵向滚动条
    _scrollView.showsVerticalScrollIndicator = NO;
    // 隐藏横向滚动条
//    _scrollView.showsHorizontalScrollIndicator = NO;
    [self.view addSubview:_scrollView];
}

- (void)addSubViews {
    //子视图个数决定了contentSize
    NSString * path = [[NSBundle mainBundle] pathForResource:@"image_圣斗士" ofType:@"plist"];
    NSArray * arr = [NSArray arrayWithContentsOfFile:path];
    //设置ContentSize
    _scrollView.contentSize = CGSizeMake(arr.count * SCREEN_SIZE.width, SCREEN_SIZE.height);
    //创建子视图,添加子视图
    for (int i = 0; i < arr.count; i++) {
        UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(i * SCREEN_SIZE.width, 0, SCREEN_SIZE.width, SCREEN_SIZE.height)];
        //图片信息
        NSDictionary * dic = arr[i];
        //图片名字
        NSString * imageName = dic[@"imageName"];
        //获取图片
        //imageNamed:获取图片,程序将会把该图片缓存到内存,当图片使用完毕,其所占用的内存并不会被释放
        //优点:当下一次使用的时候,获取效率高
        //imageNamed:适用于复用率高,图片大小较小的图片
        //UIImage * image = [UIImage imageNamed:imageName];
        
        //通过图片路径获取图片
        NSArray * imageNameAndType = [imageName componentsSeparatedByString:@"."];
        NSString * imagePath = [[NSBundle mainBundle] pathForResource:imageNameAndType[0] ofType:[imageNameAndType lastObject]];
        UIImage * image = [UIImage imageWithContentsOfFile:imagePath];
        //通过二进制对象获取图片
        //UIImage * image1 = [UIImage imageWithData:<#(nonnull NSData *)#>];
        imageView.image = image;
        
        //添加到滚动视图上
        [_scrollView addSubview:imageView];
    }
}

- (void)createPageControl {
    _pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, SCREEN_SIZE.height - 30, SCREEN_SIZE.width, 30)];
    _pageControl.backgroundColor = [UIColor colorWithWhite:0.4 alpha:0.7];
    //设置页数
    _pageControl.numberOfPages = _scrollView.contentSize.width / SCREEN_SIZE.width;
    //当前处于页数的下标
    //_scrollView.contentOffset.x / SCREEN_SIZE.width
    //修改当前页数
    _pageControl.currentPage = _scrollView.contentOffset.x / SCREEN_SIZE.width;
    
    //修改颜色
    _pageControl.currentPageIndicatorTintColor = [UIColor redColor];
    _pageControl.pageIndicatorTintColor = [UIColor yellowColor];
    
    //当只有一页的时候,是否隐藏PageControl
    _pageControl.hidesForSinglePage = YES;
    
    //绑定事件
    [_pageControl addTarget:self action:@selector(pagging:) forControlEvents:UIControlEventTouchUpInside];
    
    [self.view addSubview:_pageControl];
}

- (void)pagging:(UIPageControl *)pageControl {
    //滚动视图发生滚动,其实只是contentOffset在改变
    NSInteger index = pageControl.currentPage;
    [_scrollView setContentOffset:CGPointMake(index * SCREEN_SIZE.width, 0) animated:YES];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
UIScrollView 滚动视图 相册简单版.png

UIScrollView 滚动视图 相册简单版2

#import "ViewController.h"
#define SCREEN_SIZE [[UIScreen mainScreen] bounds].size
@interface ViewController ()<UIScrollViewDelegate>

@end

@implementation ViewController{
    UIScrollView *_sciollView;
    UIPageControl *_pageControl;
    
    
}

- (void)viewDidLoad {
    [super viewDidLoad];
    //1.创建滚动视图,设置滚动视图
    [self createScrollView];
    
    [self addSubViews];
    [self createPageControl];
    
}
- (void)createScrollView{
    _sciollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_SIZE.width, SCREEN_SIZE.height)];
    _sciollView.delegate = self;
    
    _sciollView.pagingEnabled = YES;
    _sciollView.showsVerticalScrollIndicator = NO;
    [self.view addSubview:_sciollView];
    
    
    
    
    
}
- (void)addSubViews{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"image_美女" ofType:@"plist"];
    NSArray *arr = [NSArray arrayWithContentsOfFile:path];
    
    _sciollView.contentSize = CGSizeMake(arr.count * SCREEN_SIZE.width, SCREEN_SIZE.height);
    for (int i = 0; i < arr.count; i ++) {
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(i * SCREEN_SIZE.width, 0, SCREEN_SIZE.width, SCREEN_SIZE.height)];
    
        NSDictionary *dic = arr[i];
        
        NSString *imageName = dic[@"imageName"];
        NSArray *imageNameAndType = [imageName componentsSeparatedByString:@"."];
        NSString *imagePath = [[NSBundle mainBundle] pathForResource:imageNameAndType[0] ofType:[imageNameAndType lastObject]];
        UIImage *image = [UIImage  imageWithContentsOfFile:imagePath];
        imageView.image = image;
        
        [_sciollView addSubview:imageView];
    
    }
    
    
    
    
}
- (void)createPageControl{
    _pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0,SCREEN_SIZE.height - 100, SCREEN_SIZE.width, 30 )];
    _pageControl.backgroundColor = [UIColor colorWithWhite:0.4 alpha:0.7];
    [self.view addSubview:_pageControl];
    
    _pageControl.numberOfPages = _sciollView.contentSize.width / SCREEN_SIZE.width;
    _pageControl.currentPage = _sciollView.contentOffset.x / SCREEN_SIZE.width;
    
    _pageControl.currentPageIndicatorTintColor =[UIColor redColor];
    _pageControl.pageIndicatorTintColor = [UIColor yellowColor];
    _pageControl.hidesForSinglePage = YES;
    [_pageControl addTarget:self action:@selector(pagging:) forControlEvents:UIControlEventTouchUpInside];

    
}
- (void)pagging:(UIPageControl *)pageControl{
    
    //setContentOffset
    [_sciollView setContentOffset:CGPointMake(SCREEN_SIZE.width, 0)animated:YES];
}

- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
    NSInteger currentPage = (scrollView.contentOffset.x - SCREEN_SIZE.width /2)/SCREEN_SIZE.width + 1;
    _pageControl.currentPage = currentPage;
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    //
//    NSInteger  curentPage = scrollView.contentOffset.x / SCREEN_SIZE.width;
//    _pageControl.currentPage = curentPage;
//    
    
}


@end
UIScrollView 滚动视图 相册简单版2.png
上一篇 下一篇

猜你喜欢

热点阅读