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