zoukankan      html  css  js  c++  java
  • 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 }

  • 相关阅读:
    1.Spring MVC详解
    servlet的九大内置对象
    Hibernate设置事务的隔离级别
    wamp下php报错session_start(): open(d:/wamp/tmpsess_ku776hvb06ko4lv9d11e7mnfj1, O_RDWR) failed: No such file or directory
    json_decode()相关报错
    wamp下var_dump()相关问题
    es6箭头函数内部判断
    Json数组对象取值
    npm指向淘宝源
    APICloud之封装webApp
  • 原文地址:https://www.cnblogs.com/songliquan/p/4542779.html
Copyright © 2011-2022 走看看