
跑馬燈
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è)置需要動畫的label的frame
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在簡書中不知道怎么上傳。