IOS开发学习笔记034-UIScrollView-xib实现分页
通过xib实现分页功能的封装
1、首先实现xib
UIView 的尺寸为300*130,因为准备的图片为600*260。
scrollView属性设置如下:
2、新建一个和xib同名的类
2.1 类方法,返回xib对象
1 + (instancetype)pageScroll 2 { 3 // NSStringFromClass 将类名转换成字符串,xib文件名和类名一样 4 return [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass(self) owner:nil options:nil] lastObject]; 5 }
2.2 添加一个属性保存图片名称
@property (strong, nonatomic) NSArray *imageNames; // 图片名称
然后 重写set方法
1 - (void)setImageNames:(NSArray *)imageNames 2 { 3 _imageNames = imageNames; 4 5 // 添加图片 6 for (int i = 0 ; i < imageNames.count; i ++ ) 7 { 8 UIImageView *imageView = [[UIImageView alloc] init]; 9 imageView.image = [UIImage imageNamed:_imageNames[i]]; 10 [self.scrollView addSubview:imageView]; 11 } 12 // 设置pageControl的页数 13 self.pageControl.numberOfPages = _imageNames.count; 14 // 设置scrollView是否在滚动到中间是自动滑向出现较多的那个页面 15 self.scrollView.pagingEnabled = YES; 16 }
2.3、计算每个控件的frame
1 // layout ,计算控件的frame 2 - (void)layoutSubviews 3 { 4 [super layoutSubviews]; 5 6 // 设置scrollView的frame 7 self.scrollView.frame = self.bounds; 8 //view的高度和宽度 9 CGFloat viewW = self.scrollView.frame.size.width; 10 CGFloat viewH = self.scrollView.frame.size.height; 11 12 // view 的位置 13 self.scrollView.contentSize = CGSizeMake(viewW * _imageNames.count, 0); 14 // pageControl 的frame 15 self.pageControl.frame = CGRectMake(viewW - 100, viewH - 20, 100, 20); 16 17 // 计算图片的 frame 18 for(int i = 0; i < _imageNames.count ; i ++) 19 { 20 UIImageView *imageView = self.scrollView.subviews[i]; 21 imageView.frame = CGRectMake(i * viewW, 0, viewW, viewH); 22 } 23 }
2.4、设置pageControl的当前滚动页
1 // 代理方法 2 - (void)scrollViewDidScroll:(UIScrollView *)scrollView 3 { 4 // 设置当前页的索引 5 self.pageControl.currentPage = (int)(scrollView.contentOffset.x / scrollView.frame.size.width + 0.5); 6 }
3、在控制器中加载xib文件
1 - (void)viewDidLoad { 2 [super viewDidLoad]; 3 // Do any additional setup after loading the view, typically from a nib. 4 5 6 // 加载ScrollView对象 7 SLQPageScroll *scroll = [SLQPageScroll pageScroll]; 8 scroll.frame = CGRectMake(25, 23, 300, 130); 9 scroll.imageNames = @[@"img_00",@"img_01",@"img_02",@"img_03"]; 10 11 scroll.backgroundColor = [UIColor redColor]; 12 [self.view addSubview:scroll]; 13 14 }
本文来自博客园,作者:struggle_time,转载请注明原文链接:https://www.cnblogs.com/songliquan/p/4542779.html