第二部分是把其他空间放到UIScrollView上去
1.添加一个文本控制器。
添加一个文本控制器可以自定义文本也可以直接加在imageBtn上(在这里我直接放在了imageBtn上)
因为添加文本是生成控件所以在initWithFrame后面添加一个数组参数,
ps:最好不要用其他方法里面添加。
ScrollV.h
@protocol GreenInterfaceDelegate
// 让协议方法带参传值
/**点击图片传递的值*/
- (void) pushScrollVAction:(NSInteger ) valueTag;
/**改变page传递的值*/
- (void) pageNum:(NSInteger ) pageNum;
@end
//ImageArr图片的数组 titleArr标题数组
- (instancetype)initWithFrame:(CGRect)frame andImageArr:(NSArray*)ImageArr andTitle:(NSArray *)titleArr;
//点击page的用户交互
-(void)pageContentOffset:(NSInteger)page;
ScrollV.m
//标题添加到每个imageBtn
UILabel * TitleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, CGRectGetHeight(imageBtn.bounds)-30, CGRectGetWidth(imageBtn.bounds), 30)];;
TitleLabel.text = titleArr[titleArr.count -1];
[self AddSublayerColor:TitleLabel];
[imageBtn addSubview:TitleLabel];
//scrollV.contentOffset向前滑动一页
-(void)Successful:(NSInteger)page{
//协议的方法传递page
[self.delegates pageNum:page];
}
//滑动效果减速结束后
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
//协议的方法传递page
[self.delegates pageNum:[self Dpage]-1];
}
//点击page的用户交互
-(void)pageContentOffset:(NSInteger)page{
[UIView animateWithDuration:0.5f animations:^{
self.contentOffset = CGPointMake(CGRectGetWidth(self.bounds)*(page), 0);
}];
}
2.添加一个分页控制器。
这里用的是自定义的,因为用别人的可能达不到自己想要的效果。
1.实例化分页控制器
2.分页控制其的布局
3.实现随着轮播图变化而变化
4.实现点击小圆点是轮播图改变
PageC.h
//按钮的风格
typedef NS_ENUM(NSInteger ,pageCBtnStyle) {
pageCBtnStyleNome = 0,//方形
pageCBtnStyleRound,//圆形
// pageCBtnStyleNome,
};
//1.实例化page通过传入的pageNum来确认创建几个自控制器
- (instancetype)initWithFrame:(CGRect)frame andPageNum:(NSInteger)pageNum;
//创建数组保存page
@property(strong ,nonatomic)NSMutableArray * pageArr;
//按钮风格
@property(assign ,nonatomic)pageCBtnStyle Style;
//按钮的大小
@property(assign ,nonatomic)CGSize pageSize;
//按钮的间隙和边距
@property(assign ,nonatomic)NSInteger pageClearance;
//按钮背景颜色
@property(strong ,nonatomic)UIColor * pageColor;
//按钮选中背景颜色
@property(strong ,nonatomic)UIColor * pageHetColor;
//按钮背景图片数组
@property(strong ,nonatomic)NSArray * pageImage;
//按钮选中背景图片数组
@property(strong ,nonatomic)NSArray * pageHetImage;
//当前页
@property(assign ,nonatomic)NSInteger page;
//block 的回调方法 点击返回当前页
@property(nonatomic, copy)void(^updateUserInfoBlock)(NSInteger page);
多的代码就不copy了
说下心得吧:
这个dome适用于各种类型,今本上都可以更改上面的东西
属性什么的都齐全了,基本上可以用于很多操作。
注释也全都写好了。
效果图:
UIScrollView无限轮播(一)
GitHubDome