項目涉及知識之折線繪制

大概需求:

兩條折線圖呈昔。
實線:數(shù)據(jù)是有值則畫線,值為0時則跳過友绝,直到下一個點有值堤尾;
虛線:間隔7天有值,值為0時則跳過迁客,直到下一個點有值郭宝。
日期:當(dāng)前日期居中,滑動折線圖時哲泊,日期跟著滑動剩蟀。
滑動效果:以實線中兩個有值點的距離作為一個pageSize催蝗,滑動回彈切威。

設(shè)計圖:

設(shè)計圖1.png
設(shè)計圖2.png

基礎(chǔ)知識:

1.實線的繪制方式:

    CGContextRef context = UIGraphicsGetCurrentContext(); // 獲取圖形上下文環(huán)境
    CGContextSetLineWidth(context, _reallineWidth);  // 設(shè)置線寬
    CGContextSetLineJoin(context, kCGLineJoinRound);// 設(shè)置線條的轉(zhuǎn)角的樣式
    CGContextSetLineCap(context, kCGLineCapRound);// 設(shè)置圖形環(huán)境中的畫線的端點樣式
    CGContextMoveToPoint(context, initialPoint.x, initialPoint.y); // 移動到初始點
    CGContextAddLineToPoint(context, obj.realline_x, obj.realline_y) 
    CGContextStrokePath(context); // 繪制

2.虛線的繪制方式

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, _dashlineWidth);
    [_dashlineColor set];
    CGFloat lengths[] = {4,4}; 
    CGContextSetLineDash(context, 0, lengths, 2); // 設(shè)置虛線模式
    CGPoint initialPoint = CGPointMake(firstPoint.dashline_x, firstPoint.dashline_y);
    CGContextMoveToPoint(context, initialPoint.x, initialPoint.y); 
    CGContextStrokePath(context);

3.日期(CATextLayer)

    CATextLayer *dateLayer = [CATextLayer layer];
    dateLayer.size = CGSizeMake(kLTLineViewDateWidth, kLTLineViewDateHeight);
    dateLayer.center = CGPointMake(obj.date_x, obj.date_y);
    dateLayer.alignmentMode = kCAAlignmentCenter;
    dateLayer.font = (__bridge CFTypeRef)(_dateFont);
    dateLayer.fontSize = -_dateFont.pointSize;
    dateLayer.string = obj.date;
    dateLayer.foregroundColor = _dateColor.CGColor;
    dateLayer.contentsScale = [UIScreen mainScreen].scale;
    [self.layer addSublayer:dateLayer];

4.Scrollview滑動回彈

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
    // scroll自定義page回彈size
    CGFloat kMaxIndex = (self.lineScollView.contentSize.width-kScreenWidth)/(kLTLineViewDateSpace+kLTLineViewDateWidth);
    CGFloat targetX = scrollView.contentOffset.x + velocity.x * (kLTLineViewDateSpace+kLTLineViewDateWidth);
    CGFloat targetIndex = round(targetX / (kLTLineViewDateSpace+kLTLineViewDateWidth));
    if (targetIndex < 0)
        targetIndex = 0;
    if (targetIndex > kMaxIndex)
        targetIndex = kMaxIndex;
    targetContentOffset->x = targetIndex * (kLTLineViewDateSpace+kLTLineViewDateWidth);
}

具體實現(xiàn):

先看看結(jié)構(gòu)示例:

結(jié)構(gòu)示例.png

代碼地址:
https://github.com/Cherishforever/LTLineView

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市丙号,隨后出現(xiàn)的幾起案子先朦,更是在濱河造成了極大的恐慌缰冤,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喳魏,死亡現(xiàn)場離奇詭異棉浸,居然都是意外死亡,警方通過查閱死者的電腦和手機刺彩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門迷郑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人创倔,你說我怎么就攤上這事嗡害。” “怎么了畦攘?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵霸妹,是天一觀的道長。 經(jīng)常有香客問我知押,道長叹螟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任台盯,我火速辦了婚禮罢绽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘静盅。我一直安慰自己有缆,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布温亲。 她就那樣靜靜地躺著棚壁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪栈虚。 梳的紋絲不亂的頭發(fā)上袖外,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音魂务,去河邊找鬼曼验。 笑死,一個胖子當(dāng)著我的面吹牛粘姜,可吹牛的內(nèi)容都是我干的鬓照。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼孤紧,長吁一口氣:“原來是場噩夢啊……” “哼豺裆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤臭猜,失蹤者是張志新(化名)和其女友劉穎躺酒,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蔑歌,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡羹应,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了次屠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片园匹。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖劫灶,靈堂內(nèi)的尸體忽然破棺而出偎肃,到底是詐尸還是另有隱情,我是刑警寧澤浑此,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布累颂,位于F島的核電站,受9級特大地震影響凛俱,放射性物質(zhì)發(fā)生泄漏紊馏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一蒲犬、第九天 我趴在偏房一處隱蔽的房頂上張望朱监。 院中可真熱鬧,春花似錦原叮、人聲如沸赫编。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽擂送。三九已至,卻和暖如春唯欣,著一層夾襖步出監(jiān)牢的瞬間嘹吨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工境氢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蟀拷,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓萍聊,卻偏偏與公主長得像问芬,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子寿桨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容