? ? 跑馬燈效果在移動客戶端中多用于“公告”、“消息”等功能的展示,本次demo以一種簡易的實現方法(UILabel配合timer控制label位置變化)實現了該需求。
主要實現方法如下:
- (void)setUpView {
[selfaddSubview:self.marqueeLabel];
self.marqueeLabel.sd_layout.leftSpaceToView(self,self.frame.size.width).centerYEqualToView(self).heightIs(20);//UI布局----借助SDAutoLayout框架
//啟動NSTimer定時器來改變label的位置
self.timer= [NSTimerscheduledTimerWithTimeInterval:0.01
target:selfselector:@selector(changePosition)
userInfo:nilrepeats:YES];
}
- (void)setMarqueeText:(NSString*)marqueeText {
self.marqueeLabel.text= marqueeText;// 從控制器獲取文本
}
- (void) changePosition
{
CGPointcurPosition =self.marqueeLabel.center;
//當curPos的x坐標已經超過了屏幕的寬度
if(curPosition.x<-self.marqueeLabel.width/2)
{
//控制label再次從屏幕左側開始移動
self.marqueeLabel.center=CGPointMake(self.frame.size.width+self.marqueeLabel.width/2,20);
}
else
{
//通過修改iv的center屬性來改變iv控件的位置
self.marqueeLabel.center=CGPointMake(curPosition.x-0.5,20);
}
//其實label的整個移動都是靠label.center來去設置的
}
? ? 效果如圖:
附帶GitHub地址:https://github.com/FantasyWanH/Marquee
demo中包含了SDAutoLayout第三方庫