時間選擇滑動控件

近期接收一個老項目,據(jù)說是擱置了一段時間,現(xiàn)在又撿起來繼續(xù)做,拿到項目也是醉了,32位,最低版本6.0,6和6p上就是自動拉伸,效果略顯模糊,裝在10.0以上的機(jī)子上會提示“該應(yīng)用可能會使您的手機(jī)變慢”
開始了大刀闊斧的適配之路。
閑話不多說,項目中發(fā)現(xiàn)一個應(yīng)用最多的功能就是選擇時間,然這個東西所有用到的頁面都是重復(fù)的代碼,作為一個懶到極致的程序員,看到就覺得累,果斷封裝,先看下效果圖

屏幕快照 2017-08-24 上午11.23.08.png

使用方法

//默認(rèn)選中最后一個
    CWCUtilitiChooseTimeView *timeView = [[CWCUtilitiChooseTimeView alloc] initWithFrame:CGRectMake(0, [UIScreen mainScreen].bounds.size.height-62, [UIScreen mainScreen].bounds.size.width, 62) timeArray:[@[@"2017-01",@"2017-02",@"2017-03",@"2017-04",@"2017-05",@"2017-06",@"2017-07",@"2017-08"] mutableCopy]];
    
    __weak __typeof(&*self)ws = self;
    
    timeView.didSelectTimeTitle=^(NSString *title){
    
        //此處處理選擇時間后的操作
        
        UILabel *label = (UILabel *)[ws.view viewWithTag:824];
        
        label.text = [NSString stringWithFormat:@"您選擇的時間是:%@",title];
    };
    
    [self.view addSubview:timeView];

詳細(xì)說明

1.由于選擇的時間需要居中,所以時間數(shù)組需要添加兩個空字符占位,以保證有時間顯示的項可以居中

self = [super initWithFrame:frame];
    if (self) {
       
        [timeArray addObject:@"累計"];
        [timeArray addObject:@""];
        [timeArray insertObject:@"" atIndex:0];
        
        _timeDataArray = timeArray;
        self.backgroundColor = [UIColor clearColor];
        [self useTimeData];
        
    }

2、由于可選擇的刷新點(diǎn)不會太多,本demo沒有做復(fù)用優(yōu)化,所有的視圖都沒有復(fù)用

for (int i = 0; i < self.timeDataArray.count; i++)
    {
        if (i == 0) {
            continue;
        }
        if (i == self.timeDataArray.count - 1) {
            continue;
        }
        UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(i*width, 0, width, 40)];
        
        [button setTitle:[self.timeDataArray objectAtIndex:i] forState:normal];
        
        
        
            if (i == self.timeDataArray.count - 2)
            {
                [button setTintColor:[UIColor whiteColor]];
            }
            else
            {
                [button setTitleColor:[self colorWithHexString:@"#235aba"] forState:normal];
            }
    
        button.backgroundColor = [UIColor clearColor];
        button.titleLabel.font = [UIFont systemFontOfSize:12];
        [button addTarget:self action:@selector(dateBtnClicked:) forControlEvents:UIControlEventTouchUpInside];
        button.tag = i+1000;
        [self.myScrollView addSubview:button];
        
    }

3、滑動時間視圖的處理,滑動結(jié)束的毀掉采用block,清晰易懂

CGFloat width = (SCREENWIDTH-20)/3;
    
    float contentOffset_X = roundf(scrollView.contentOffset.x / width);
    [scrollView setContentOffset:CGPointMake(contentOffset_X*width, 0) animated:NO];
    
    CGFloat getDateNumInt;
    
    getDateNumInt = contentOffset_X;
    NSInteger TAG = 1001;
        
        NSString *blockTitle = @"all";
        if ([[self.timeDataArray objectAtIndex:getDateNumInt+1] isEqualToString:@"累計"])
        {
            
        }
        else
        {
            blockTitle =[self.timeDataArray objectAtIndex:getDateNumInt+1];
            
        }
        
        if (self.didSelectTimeTitle) {
            self.didSelectTimeTitle(blockTitle);
        }
        
        for (id objc in self.myScrollView.subviews)
        {
            if ([objc isKindOfClass:[UIButton class]]) {
                UIButton *tempbutton = objc;
                [tempbutton setTitleColor:[self colorWithHexString:@"#235aba"] forState:normal];
            }
        }
        UIButton *button = (UIButton *)[self viewWithTag:getDateNumInt+TAG];
        [button setTitleColor:[UIColor whiteColor] forState:normal];

4、問題,在滑動的回調(diào)方法中要同事實現(xiàn)

//滑動減速結(jié)束
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
//拖動結(jié)束,沒有減速過程
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;

以上兩個方法都需實現(xiàn),否則您會發(fā)現(xiàn)滑動結(jié)束或是多動結(jié)束會有一種情況沒有反應(yīng)

以上的控件比較輕量級,沒有其他復(fù)雜的功能,至于底色、字體、一行顯示時間數(shù)等,可自行修改,下面是效果

IMG_2900.GIF

demo地址https://github.com/wenchang1989/CWCChooseRefreshTeme

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,192評論 25 708
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,430評論 4 61
  • 留給詩歌的就這個小小的一隅 還有發(fā)酵的情緒 欲說還休的夜晚 加點(diǎn)孤獨(dú)矯情 單曲循環(huán)算不算? 感覺恐懼了...
    顧姜生閱讀 181評論 0 0
  • 這兩幅照片給兜兜一看,他發(fā)出來爆笑如雷的聲音,遲遲不能停止(o^^o)…… 有這么搞笑嘛(^_^) 我猜因為他回想...
    稚言之語閱讀 245評論 0 2
  • 經(jīng)歷了許多事,經(jīng)歷了許多人,走著他人難以理解的人生道路,未曾質(zhì)疑過。 渴望太多,卻不懂得如何學(xué)會知足。 時間是一塊...
    鯉魚666閱讀 250評論 0 0

友情鏈接更多精彩內(nèi)容