UILabel(跑馬燈)

跑馬燈
UILabel *marLabel = [[UILabel alloc] initWithFrame:CGRectMake(320, 100, 0, 0)];
marLabel.text = @"人生若只如初見,何事秋風(fēng)悲畫扇。等閑變卻故人心,卻道故人心易變。驪山語罷清宵半,淚雨霖鈴終不怨。何如薄幸錦衣郎,比翼連枝當(dāng)日愿。";

size根據(jù)文字自適應(yīng)

[marLabel sizeToFit];
[self.view addSubview:marLabel];

動畫方法的詳細(xì)說明請參考UIView(UIViewAnimation)
開始動畫
參數(shù)animationID,動畫內(nèi)部應(yīng)用程序標(biāo)識用來傳遞給動畫代理消息。
參數(shù)context,附加的應(yīng)用程序信息用來傳遞給動畫代理消息。

[UIView beginAnimations:@"Marquee" context:NULL];

設(shè)置動畫持續(xù)時間

[UIView setAnimationDuration:20.0f];

設(shè)置動畫變化曲線

[UIView setAnimationCurve:UIViewAnimationCurveLinear];

設(shè)置動畫是否從當(dāng)前狀態(tài)開始播放

[UIView setAnimationRepeatAutoreverses:NO];

設(shè)置動畫重復(fù)次數(shù)

[UIView setAnimationRepeatCount:10000];

設(shè)置需要動畫的labelframe

CGRect frame = marLabel.frame;
frame.origin.x = -frame.size.width;
marLabel.frame = frame;

結(jié)束動畫

[UIView commitAnimations];

注意

以上代碼是相對于屏幕的320寬度實現(xiàn)的,但是實際使用的時候,可能只需要屏幕中間200的寬度,應(yīng)該怎么做?
label創(chuàng)建一個背景view,將label添加到這個view上,這樣label實際的frame就會被這個view所遮擋,這里需要設(shè)置一個屬性bgView.clipsToBounds = YES;這個屬性意思是子視圖超出父視圖的部分不顯示。
demo在簡書中不知道怎么上傳。

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

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

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