文字无限轮播,适用于广播消息的上下无限轮播展示。
DEMO下载链接:https://github.com/IMCCP/CCPScrollView
DEMO GIF:
DEMO 描述:
通过使用 UILabel 与 UIScrollView 来实现轮播效果。
实现的思路:
打个比方,如果需要展示5条数据,就在ScrollView上创建5 + 1个label,使得数据的显示顺序为5-1-2-3-4-5。首次显示1的位置,然后滑动,等滑动到最后一个
label即数据为5时,无动画(一定是无动画效果)切换到第一个label的位置也就是第一个数据为5的位置,就可以实现文字的无限轮播滚动了。详细的实现过程可以查
看DEMO。
DEMO方法介绍:
/**
* 文字数组
*/
@property (nonatomic,strong) NSArray *titleArray;
/**
* 拼接后的文字数组
*/
@property (nonatomic,strong) NSMutableArray *titleNewArray;
/**
* 是否可以拖拽
*/
@property (nonatomic,assign) BOOL isCanScroll;
/**
* block回调
*/
@property (nonatomic,copy)void(^clickLabelBlock)(NSInteger index,NSString *titleString);
/**
* 字体颜色
*/
@property (nonatomic,strong) UIColor *titleColor;
/**
* 背景颜色
*/
@property (nonatomic,strong) UIColor *BGColor;
/**
* 字体大小
*/
@property (nonatomic,assign) CGFloat titleFont;
/**
* 关闭定时器
*/
- (void)removeTimer;
/**
* 添加定时器
*/
- (void)addTimer;
/**
* label的点击事件
*/
- (void) clickTitleLabel:(clickLabelBlock) clickLabelBlock;
DEMO 使用示例
- (void)viewDidLoad {
[super viewDidLoad];
[self.view setNeedsLayout];
[self.view layoutIfNeeded];
CCPScrollView *ccpView = [[CCPScrollView alloc] initWithFrame:CGRectMake(65, 0, self.testView.frame.size.width - 80, self.testView.frame.size.height)];
ccpView.titleArray = [NSArray arrayWithObjects:@"iPhone6s上线32G内存手机你怎么看?",@"亲爱的朋友们2016年还有100天就要过去了,2017年您准备好了吗?",@"今年双11您预算了几个月的工资?",@"高德与百度互掐,你更看好哪方?", nil];
ccpView.titleFont = 18;
ccpView.titleColor = [UIColor blackColor];
ccpView.BGColor = CCPRGBColor(221, 221, 221);
[ccpView clickTitleLabel:^(NSInteger index,NSString *titleString) {
NSLog(@"%ld-----%@",index,titleString);
//自定义的弹出view,可以对弹出视图进行高度的自定义
UIView *alertView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width - 15 * 2, 250)];
alertView.backgroundColor = [UIColor whiteColor];
alertView.layer.cornerRadius = 8;
alertView.layer.masksToBounds = YES;
UILabel *alertLabel = [[UILabel alloc] init];
alertLabel.textAlignment = NSTextAlignmentCenter;
alertLabel.text = titleString;
alertLabel.font = [UIFont systemFontOfSize:20];
alertLabel.numberOfLines = 0;
alertLabel.width = [UIScreen mainScreen].bounds.size.width - 15 * 2;
[alertLabel sizeToFit];
alertLabel.centerX = alertView.centerX;
alertLabel.centerY = alertView.centerY;
[alertView addSubview:alertLabel];
//弹出自定义弹窗
CCPActionSheetView *actionSheetView = [[CCPActionSheetView alloc] initWithAlertView:alertView];
actionSheetView.viewAnimateStyle = ViewAnimateScale;
}];
[self.testView addSubview:ccpView];
}