分页的封装设计
#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辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。