分页的封装

分页的封装设计



#import <UIKit/UIKit.h>

@interface XMGPageView : UIView
+ (instancetype)pageView;
/** 图片名字 */
@property (nonatomic, strong) NSArray *imageNames;
/**  其他面颜色  */
@property(nonatomic,strong)UIColor * otherColor ;
/**  当前颜色  */
@property(nonatomic,strong)UIColor * currentColor NS_DEPRECATED_IOS(2_0, 2_0, "建议使用nbColor") ;
@end




#import "XMGPageView.h"

@interface XMGPageView()<UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
@end

@implementation XMGPageView

+ (instancetype)pageView
{
    return [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass(self) owner:nil options:nil] lastObject];
}

- (void)setImageNames:(NSArray *)imageNames
{
    //一定要赋值,因为getter方法要重写
    _imageNames = imageNames;
    
    for (int i = 0; i<imageNames.count; i++) {
        UIImageView *imageView = [[UIImageView alloc] init];
        imageView.image = [UIImage imageNamed:imageNames[i]];
        [self.scrollView addSubview:imageView];
    }
}

- (void)layoutSubviews
{
    [super layoutSubviews];
    
    // TODO 设置所有imageView的frame
    
    self.scrollView.frame=self.bounds;
    CGFloat scrollW=self.scrollView.frame.size.width;
    CGFloat scrollH=self.scrollView.frame.size.height;
    
    CGFloat pageW=100;
    CGFloat pageH=30;
    CGFloat pageX=scrollW-pageW;
    CGFloat pageY=scrollH-pageH;
    self.pageControl.frame=CGRectMake(pageX, pageY, pageW, pageH);
    
    // 设置内容大小
    self.scrollView.contentSize = CGSizeMake(self.imageNames.count * scrollW, 0);
    
    for (int i=0; i<self.scrollView.subviews.count; ++i) {
        UIImageView *imageView = self.scrollView.subviews[i];
        imageView.frame = CGRectMake(i * scrollW, 0, scrollW, scrollH);
    }
    
    
    
    
}
#pragma mark - setter方法的重写
- (void)setImageNames:(NSArray *)imageNames
{
    _imageNames=imageNames;
    
    
    [self.scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
    
    for (int i=0; i<imageNames.count; ++i) {
        UIImageView *imageView=[[UIImageView alloc]init];
        
        imageView.image=[UIImage imageNamed:imageNames[i]];
        [self.scrollView addSubview:imageView];
        
    }
    self.pageControl.numberOfPages=imageNames.count;
    
    
}

-(void)setCurrentColor:(UIColor *)currentColor
{
    _currentColor=currentColor;
    self.pageControl.pageIndicatorTintColor=currentColor;
}

-(void)setOtherColor:(UIColor *)otherColor
{
    _otherColor=otherColor;
    self.pageControl.pageIndicatorTintColor=otherColor;
    
}


-(void)scrollViewDidZoom:(UIScrollView *)scrollView
{
    self.pageControl.currentPage=(int)(self.scrollView.contentOffset.x/self.scrollView.frame.size.width+0.5);
}

@end



#import "ViewController.h"
#import "XMGPageView.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    XMGPageView *pageView = [XMGPageView pageView];
    pageView.frame = CGRectMake(37, 50, 250, 200);
    pageView.imageNames = @[@"img_00", @"img_01", @"img_02"];
    pageView.otherColor = [UIColor grayColor];
    pageView.currentColor = [UIColor orangeColor];
    pageView.currentColor = [UIColor blueColor];
    
    [self.view addSubview:pageView];
    
    
    pageView.imageNames = @[@"img_00", @"img_01", @"img_02", @"img_03", @"img_04"];
}
@end


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容