| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- //
- // MGShowLiveWishView.m
- // BuguLive
- //
- // Created by 宋晨光 on 2019/12/14.
- // Copyright © 2019 xfg. All rights reserved.
- //
- #import "MGShowLiveWishView.h"
- @implementation MGShowLiveWishView
- - (instancetype)initWithFrame:(CGRect)frame
- {
- self = [super initWithFrame:frame];
- if (self) {
-
- self.isDragging = NO;
- self.isDecelerating = NO;
- self.scrollView.frame = self.bounds;
- [self setUpView];
- // [self requestModel];
- }
- return self;
- }
- - (instancetype)init
- {
- self = [super init];
- if (self) {
- self.scrollView.frame = self.bounds;
- [self addSubview:self.scrollView];
- // [self setUpView];
- // [self requestModel];
-
- //启动定时器
- self.rotateTimer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(aoutScroll) userInfo:nil repeats:YES];
- }
- return self;
- }
- -(void)setUpView{
- CGFloat viewWidth = self.width;
- CGFloat viewHeight = self.height;
- for (int i = 0; i < 3; i ++) {
- MGShowLiveSubView *view = [[MGShowLiveSubView alloc]initWithFrame:CGRectMake(0, viewHeight * i, viewWidth, viewHeight)];
- view.tag = 100 + i;
- [self.scrollView addSubview:view];
- }
- }
- -(void)showView{
-
- }
- -(void)relayoutFrameOfSubViews{
- CGFloat viewWidth = self.width;
- CGFloat viewHeight = self.height;
-
- self.scrollView.frame = self.bounds;
- self.scrollView.contentSize = CGSizeMake(0, self.listArr.count * viewHeight);
- self.contentOffsetP = CGPointMake(viewWidth, viewHeight * 3);
-
- [self.scrollView removeAllSubViews];
- for (int i = 0; i < self.listArr.count; i ++) {
- MGShowLiveSubView *view = [[MGShowLiveSubView alloc]initWithFrame:CGRectMake(0, viewHeight * i, viewWidth, viewHeight)];
- view.tag = 100 + i;
- view.frame = CGRectMake(0, viewHeight * i, viewWidth, viewHeight);
- MGLiveWishModel *model = self.listArr[i];
- view.model.g_now_num = @"30";
- view.model = model;
- [self.scrollView addSubview:view];
-
- if (i == 0) self.topWishView = view;
- if (i == 1) self.middleWishView = view;
- if (i == 2) self.bottomWishView = view;
-
- }
- }
- -(void)requestModel:(NSString *)roomIDStr{
- self.listArr = [NSMutableArray array];
- NSMutableDictionary *mDict = [NSMutableDictionary dictionary];
- [mDict setObject:@"user_wish" forKey:@"ctl"];
- [mDict setObject:@"wish_list" forKey:@"act"];
- if(roomIDStr.length > 0)
- {
- //4-16 3.心愿单无效。
- [mDict setObject:roomIDStr forKey:@"room_id"];
- }
- [[NetHttpsManager manager] POSTWithParameters:mDict SuccessBlock:^(NSDictionary *responseJson) {
- if ([responseJson toInt:@"status"] == 1)
- {
- NSArray *arr = [responseJson valueForKey:@"list"];
- [self.listArr removeAllObjects];
- if (arr.count > 0) {
- for (NSDictionary *dic in arr)
- {
- MGLiveWishModel *model = [MGLiveWishModel mj_objectWithKeyValues:dic];
- [self.listArr addObject:model];
- }
- }
- self.hidden = self.listArr.count > 0 ? NO :YES;
- [self relayoutFrameOfSubViews];
- }
- } FailureBlock:^(NSError *error) {
- }];
- }
- #pragma mark ---- 用户翻页后重置数据
- - (void)resetContent{
- if (self.listArr.count < 2) {
- return;
- }
- //重置偏移量
- CGPoint offset = CGPointMake(0, self.height);
- [self.scrollView setContentOffset:offset];
-
- //重置图片
- NSInteger leftIndex = (self.currentPageIndex-1+self.listArr.count)%self.listArr.count;
- NSInteger centerIndex = self.currentPageIndex;
- NSInteger rightIndex = (self.currentPageIndex+1+self.listArr.count)%self.listArr.count;
-
-
-
- self.topWishView.model = self.listArr[leftIndex];
- self.middleWishView.model = self.listArr[centerIndex];
- self.bottomWishView.model = self.listArr[rightIndex];
-
- self.isDragging = NO;
- self.isDecelerating = NO;
- }
- #pragma mark --- ScrollView代理
- //当调用contentoffset方法动画完毕时调用次方法
- -(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
- [self scrollViewDidEndDecelerating:self];
- NSLog(ASLocalizedString(@"调用方法contentoffset方法动画完毕时调用次方法+++++++++++"));
- }
- //当用手指拖拽的时候调用次方法
- - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
- NSLog(ASLocalizedString(@"正在拖拽视图,所以需要将自动播放暂停掉"));
- //setFireDate:设置定时器在什么时间启动
- //[NSDate distantFuture]:将来的某一时刻
- self.isDragging = YES;
- [self.rotateTimer setFireDate:[NSDate distantFuture]];
- }
- //当手指拖拽产生的滚动停止滚动时调用此方法。
- - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
- {
- self.isDragging = NO;
- //视图静止之后,过4秒在开启定时器
- NSLog(ASLocalizedString(@"开启定时器"));
- [self.rotateTimer setFireDate:[NSDate dateWithTimeInterval:3 sinceDate:[NSDate date]]];
- NSLog(@"scrollViewDidEndDecelerating------------%f",self.contentOffsetP.y);
- //获取滚动视图移动的距离。
- CGFloat userDistance = self.contentOffsetP.y - self.height;
- if (userDistance < 0 ) {
- //往左翻页,将currentPage往上翻页
- self.currentPageIndex = (self.currentPageIndex - 1 + self.listArr.count)% self.listArr.count;
- [self resetContent];
- }else if (userDistance > 0){
- //往右翻页,将currentPage往下翻页
- self.currentPageIndex = (self.currentPageIndex + 1 + self.listArr.count)%self.listArr.count;
- [self resetContent];
- }else{
- //用户未翻页成功,什么都不做。
- }
- }
- #pragma mark --- 定时器自动翻页方法
- - (void)aoutScroll{
-
- if (self.listArr.count < 2) {
- return;
- }
-
- NSLog(ASLocalizedString(@"定时器被调用------------------------"));
- //这里需要判断如果用户正在拖动屏幕或者视图正在滚动,是不可以自动翻页的,避免和用户的操作相冲突。
- if (![self isDragging] || ![self isDecelerating]) {
- //这里只对contentOffset进行设置,因为一旦设置了contentOffSet后代理就会自动调用- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView此方法,代码重用,会利用我们上面写好的逻辑帮我们处理剩下的东西。
- [self.scrollView setContentOffset:CGPointMake(0, self.height * 2) animated:YES];
- }
- }
- -(UIScrollView *)scrollView{
- if (!_scrollView) {
- _scrollView = [UIScrollView new];
- _scrollView.delegate = self;
- }
- return _scrollView;
- }
- @end
- @implementation MGShowLiveSubView
- - (instancetype)initWithFrame:(CGRect)frame
- {
- self = [super initWithFrame:frame];
- if (self) {
- [self setUpView];
- }
- return self;
- }
- -(void)setUpView{
- self.iconImgView = [[UIImageView alloc]initWithFrame:CGRectMake(kRealValue(6), 0, kRealValue(30), kRealValue(30))];
- self.iconImgView.centerY = self.frame.size.height / 2;
-
- self.nameL = [[UILabel alloc]initWithFrame:CGRectMake(self.iconImgView.right + kRealValue(6), 0, kRealValue(80), kRealValue(20))];
- self.nameL.text = ASLocalizedString(@"七彩火箭");
- self.nameL.font = [UIFont systemFontOfSize:11];
- self.nameL.textColor = kWhiteColor;
-
- self.countL = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, kRealValue(73), kRealValue(15))];
- self.countL.textColor = kWhiteColor;
- self.countL.textAlignment = NSTextAlignmentCenter;
- self.countL.font = [UIFont systemFontOfSize:(9)];
-
- self.tintLineView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 0, kRealValue(15))];
-
- // [UIColor colorWithHexString:@""];
- self.bgLineView = [[UIView alloc]initWithFrame:CGRectMake(self.nameL.left, self.nameL.bottom + kRealValue(2), kRealValue(70), kRealValue(15))];
- self.bgLineView.backgroundColor = [UIColor colorWithHexString:@"#D8D8D8"];
-
- self.bgLineView.layer.cornerRadius = kRealValue(15 / 2);
- self.bgLineView.layer.masksToBounds = YES;
-
- [self addSubview:self.iconImgView];
- [self addSubview:self.nameL];
- [self addSubview:self.bgLineView];
- [self.bgLineView addSubview:self.tintLineView];
- [self.bgLineView addSubview:self.countL];
- }
- - (void)setModel:(MGLiveWishModel *)model{
-
- [self.bgLineView removeAllSubViews];
- self.tintLineView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 0, kRealValue(15))];
- [self.bgLineView addSubview:self.tintLineView];
- [self.bgLineView addSubview:self.countL];
-
- [self.iconImgView sd_setImageWithURL:[NSURL URLWithString:model.g_icon] placeholderImage:nil];
- self.nameL.text = model.g_name;
- self.tintLineView.width = [model.g_now_num floatValue] / [model.g_num floatValue] * self.bgLineView.width;
- CAGradientLayer *layer = [self gradientLayerWithColor1:[UIColor colorWithHexString:@"#9D64FF"] AtColor2:[UIColor colorWithHexString:@"#F060F6"] view:self.tintLineView];
- [self.tintLineView.layer addSublayer:layer];
- self.countL.text = [NSString stringWithFormat:@"%@/%@",model.g_now_num,model.g_num];
- }
- - (CAGradientLayer*)gradientLayerWithColor1:(UIColor*)color1 AtColor2:(UIColor*)color2 view:(UIView *)view
- {
- CAGradientLayer* layer = [CAGradientLayer new];
- layer.colors = @[ (__bridge id)color1.CGColor, (__bridge id)color2.CGColor];
- layer.startPoint = CGPointMake(0.5f, -0.5);
- layer.endPoint = CGPointMake(0.5, 1);
- layer.frame = view.bounds;
- return layer;
- }
- @end
|