抖音滾動字幕—iOS

轉(zhuǎn)載:原文地址

前言

今天給大家?guī)淼氖嵌兑舻脻L動字幕,也就是音樂專輯的專輯名稱 廢話不多說上圖

抖音如下

系統(tǒng)的滾動字幕如下

本篇完成之后如下

  • 支持蒙版漸變模糊 可調(diào)節(jié)
  • 支持富文本字符串用于顯示表情或者圖片

開篇

整個實現(xiàn)比較簡單 不超過 200行代碼

首先我們要用到兩個CALayer

  • CATextLayer 用于展示文本
  • CAGradientLayer 用于給文本加蒙版

然后我們新建一個UIScrollTextView繼承自UIView(我這是純娛樂寫成UI前綴大家可自行封裝哈.)

@interface UIScrollTextView : UIView
@property (nonatomic, copy  ) NSString           *text;   //1
@property (nonatomic, strong) UIColor            *textColor; //2
@property (nonatomic, strong) UIFont             *font;  //3

@property (nonatomic, strong) NSAttributedString *attrString; //4
/**
 漸變開始的距離(0~0.5) 推薦 0.0x eg:0.026,
 如果設置成1的時候視圖不夠長會出現(xiàn)溢出得情況 不推薦超出范圍
 */
@property (nonatomic, assign) CGFloat            fade; //5
@end

對外暴露的接口

  • 1.顯示的文本內(nèi)容
  • 2.文本顏色
  • 3.文本字體
  • 4.屬性字符串 自行可控顏色字體和樣式
  • 5.蒙版漸變模糊的 漸變長度

首先大家可以先忽略這些對外暴露的接口 到.m中看實現(xiàn)如下

@interface UIScrollTextView ()
@property (nonatomic, strong) CATextLayer  *textLayer; //文本layer 
@property (nonatomic, strong) CAGradientLayer *gradientLayer; //蒙版漸變layer
@property (nonatomic, assign) CGFloat      textSeparateWidth; //文本分割寬度
@property (nonatomic, assign) CGFloat      textWidth;   //文本寬度
@property (nonatomic, assign) CGFloat      textHeight;  //文本高度
@property (nonatomic, assign) CGRect       textLayerFrame; //文本layer的frame
@property (nonatomic, assign) CGFloat      translationX; //文字位置游標
@end

initWithFrame:;和awakeFromNib方法中 初始化一些成員變量

- (instancetype)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        [self configProperty];//初始化成員變量 //1
        [self initLayer]; //2
    }
    return self;
}
- (void)configProperty {
    _text = @"";
    _textColor = [UIColor whiteColor];
    _font = [UIFont systemFontOfSize:14.0];
    self.textSeparateWidth = [kSeparateText calculateSingleLineSizeFromFont:self.font].width;
    _fade = 0.026;
}

  • 1.configProperty方法 初始化默認值
  • 2.initLayer方法創(chuàng)建我們需要的2個layer > configProperty方法 初始化成員變量最好用_下劃線 這樣不會觸發(fā)setter因為我們很多的代碼都是寫在setter和getter中

初始化Layer

下面我們重點看下initLayer 、痕支、寄悯、燃异、


后續(xù)全文完整內(nèi)容請轉(zhuǎn)看:我的博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末小渊,一起剝皮案震驚了整個濱河市减途,隨后出現(xiàn)的幾起案子噩峦,更是在濱河造成了極大的恐慌秀睛,老刑警劉巖币他,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坞靶,死亡現(xiàn)場離奇詭異,居然都是意外死亡蝴悉,警方通過查閱死者的電腦和手機彰阴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拍冠,“玉大人尿这,你說我怎么就攤上這事簇抵。” “怎么了射众?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵碟摆,是天一觀的道長。 經(jīng)常有香客問我叨橱,道長典蜕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任罗洗,我火速辦了婚禮愉舔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘伙菜。我一直安慰自己轩缤,他們只是感情好,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布贩绕。 她就那樣靜靜地躺著典奉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丧叽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天公你,我揣著相機與錄音踊淳,去河邊找鬼。 笑死陕靠,一個胖子當著我的面吹牛迂尝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播剪芥,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼垄开,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了税肪?” 一聲冷哼從身側(cè)響起溉躲,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎益兄,沒想到半個月后锻梳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡净捅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年疑枯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛔六。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡荆永,死狀恐怖废亭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情具钥,我是刑警寧澤豆村,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站氓拼,受9級特大地震影響你画,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜桃漾,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一坏匪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧撬统,春花似錦适滓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至苦囱,卻和暖如春嗅绸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背撕彤。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工鱼鸠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人羹铅。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓蚀狰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親职员。 傳聞我的和親對象是個殘疾皇子麻蹋,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

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