设为首页 加入收藏

TOP

分页(进行封装处理)(一)
2017-10-13 10:24:10 】 浏览:3425
Tags:分页 进行 封装 处理

主要用Xib方式,代码后期还会有进一步的优化

功能:类似于手机打开新浪网首页最上面的大图片,自动滚动,右下角有个页数显示。

思路和注意点:1、主要用到的是scrollView和page control

                    2、在Xib中布置好控件

                     

                    3、封装三部曲(首先在自定义构造方法内添加子控件,其次在layoutSubview中添加子控件的尺寸(此方法有随着外部尺寸变化,子控件尺寸比例

          着变化的动能),最后重写setter方法,拿到模型数据)

                    4、其它细节的设置如:翻页动画,page control小点的颜色变化,单页时候page control自动隐藏等等

 

使用的主要方法:1、加载Xib的方法:loadNibNamed

                       2、封装子控件的三步:- (instancetype)initWithFrame:(CGRect)frame{}

                                                     - (void)layoutSubviews{}

                           - (void)setImageNames:(NSArray *)imageNames{}      

       

代码实现:

ZWpageView.h中:

 1 #import <UIKit/UIKit.h>
 2 @interface ZWpageView : UIView <UIScrollViewDelegate>
 3 
 4 + (instancetype)pageView;
 5 /** 图片数据 */
 6 @property (strong, nonatomic)NSArray *imageNames;  
 7 /** 其它圆点颜色 */
 8 @property (strong, nonatomic)UIColor *otherColor;
 9 /** 当前圆点颜色 */
10 @property (strong, nonatomic)UIColor *currentColor;
11 
12 @end

ZWpageView.m中

#import "ZWpageView.h"
@interface ZWpageView()

@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
/** 定时器 */
@property (strong, nonatomic)NSTimer *timer;

@end
@implementation ZWpageView

#pragma mark - 初始化方法
+ (instancetype)pageView{
    return [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass(self) owner:nil options:nil] lastObject];
}
// 当xib\storyboard创建时,会调用这个方法来初始化控件
- (instancetype)initWithFrame:(CGRect)frame{
    if (self = [super initWithFrame:frame]) {
        [self setup];
    }
    return self;
}

/**
 * 当xib\storyboard创建完毕时,会调用这个方法来初始化控件
 * 当xib\storyboard创建完毕后的初始化操作,应该在这里面进行
 */
- (void)awakeFromNib
{
    [self setup];
}
- (void)setup
{
    self.scrollView.backgroundColor = [UIColor blueColor];
    //开启定时器
    [self startTimer];
    
}

- (void)layoutSubviews{
    [super layoutSubviews];
    //设置scrollView的frame
    self.scrollView.frame = self.bounds;
    
    CGFloat imageW = self.scrollView.frame.size.width;
    CGFloat imageH = self.scrollView.frame.size.height;
    //设置pageControl
    CGFloat pageW = 100;
    CGFloat pageH = 37;
    self.pageControl.frame = CGRectMake(imageW - pageW, imageH - pageH, pageW, pageH);
    //单页时候pageControl自动隐藏
//    self.pageControl.hidesForSinglePage = YES;   //xib中可以直接勾上!!!
    
    self.scrollView.contentSize = CGSizeMake(self.imageNames.count * imageW, 0);

    for (int i=0; i<self.scrollView.subviews.count; i++) {
        UIImageView *imageView = self.scrollView.subviews[i];
        imageView.frame = CGRectMake(i * imageW, 0, imageW,imageH);
    }
}
#pragma mark - 代理

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    self.pageControl.currentPage = (int)(self.scrollView.contentOffset.x / self.scr
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇iOS 学习 - 10下载(2) NSURLSessi.. 下一篇IOS CALayer(一)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目