iOS - 實現(xiàn)在有限label上 動態(tài)顯示所有文字

專著:http://www.lxweimin.com/p/a490131e00e7

效果如下:

001.gif

點擊下載查看demo

思路

創(chuàng)建一個view 作為所有內容的父控件, 并且添加到上面一個 label, 作為顯示文字的載體

UILabel* contentLabel = [[UILabelalloc] init];[contentLabel sizeToFit];contentLabel.backgroundColor= [UIColorclearColor]; _contentLabel = contentLabel; [selfaddSubview:self.contentLabel];

給內容view的layer添加一個mask層, 并且設置其范圍為整個view的bounds, 這樣就讓超出view的內容不會顯示出來

CAShapeLayer* maskLayer = [CAShapeLayerlayer];maskLayer.path= [UIBezierPathbezierPathWithRect:self.bounds].CGPath;self.layer.mask= maskLayer;

給label添加動畫

CAKeyframeAnimation* keyFrame = [CAKeyframeAnimationanimation];keyFrame.keyPath=@"transform.translation.x";keyFrame.values= @[@(0), @(-space), @(0)];keyFrame.repeatCount=NSIntegerMax;keyFrame.duration=self.speed*self.contentLabel.text.length;keyFrame.timingFunctions= @[[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut], [CAMediaTimingFunctionfunctionWithControlPoints:0:0:0.5:0.5]];keyFrame.delegate=self;[self.contentLabel.layeraddAnimation:keyFrame forKey:nil];

使用方法

// 創(chuàng)建CFDynamicLabel* testLabel = [[CFDynamicLabelalloc] initWithFrame:CGRectMake(100,300,180,21)];// 設置滾動速度testLabel.speed=0.6;[self.viewaddSubview:testLabel];// 設置基本屬性testLabel.text=@"我不想說再見,不說再見,越長大越孤單";testLabel.textColor= [UIColoryellowColor];testLabel.font= [UIFontsystemFontOfSize:23];testLabel.backgroundColor= [UIColorgrayColor];

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 效果如下: 點擊下載查看demo 思路 創(chuàng)建一個view 作為所有內容的父控件, 并且添加到上面一個 label,...
    萌小菜閱讀 12,033評論 7 63
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復雜,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,573評論 6 30
  • 相信大家有時候會遇到在首頁上部展示一行文字,但是文字又很長無法只使用一行來展示,于是大家就想到平時我們在生活中看到...
    ys簡單0閱讀 379評論 1 2
  • // // JackDateAndDateView.m // ZHB // // Created by JackR...
    JackRen閱讀 431評論 0 1
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復雜,今天將帶大家一窺iOS動畫全貌。在這里你可以看...
    F麥子閱讀 5,147評論 5 13