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 }

 

 

 

posted @ 2015-05-31 23:50  struggle_time  阅读(1109)  评论(0编辑  收藏  举报