OC Swift 走馬燈效果

 咱們常見走馬燈樣式的功能,下面整理一下 Object-C 與 Swift 的實現代碼優化

OC
UILabel *label3 = [[UILabel alloc] initWithFrame:CGRectMake(10,200, self.view.bounds.size.width, 100)];
label3.backgroundColor = [UIColor redColor];
label3.text =@"走馬燈 走馬燈 走馬燈 走馬燈 走馬燈 走馬燈 走馬燈 走馬燈~~~";
[self.view addSubview:label3];

CGRect frame = label3.frame;
frame.origin.x = -180;
label3.frame = frame;
[UIView beginAnimations:@"testAnimation"context:NULL];
[UIView setAnimationDuration:8.8f];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDelegate:self];
[UIView setAnimationRepeatAutoreverses:NO];
[UIView setAnimationRepeatCount:999999];
frame = label3.frame;
frame.origin.x =350;
label3.frame = frame;
[UIView commitAnimations];
Swift
//添加上計算文字長度,優化動畫效果
let str : NSString = "走馬燈 走馬燈 走馬燈 走馬燈 走馬燈 走馬燈 走馬燈 走馬燈......"
let font : UIFont = UIFont.systemFont(ofSize: 14)
let attrs : NSDictionary = [NSFontAttributeName : font]
let size : CGSize = str.boundingRect(with: CGSize.init(width: kScreenWidth, height: CGFloat(MAXFLOAT)), options: [.usesLineFragmentOrigin, .usesFontLeading], attributes: attrs as! [String : Any], context: nil).size
let lab = UIFactory.create_ALabel(text: str as String, superView: self.view)
lab.frame = CGRect(x: 15, y: 10, width: kScreenWidth, height: 20)
lab.textColor = UIColor.hrgb("666666")
lab.font = font
var frame : CGRect = lab.frame
frame.origin.x = size.width
lab.frame = frame
UIView.beginAnimations("testAnimation", context: nil)
UIView.setAnimationDuration(8.8)
UIView.setAnimationCurve(.linear)
UIView.setAnimationDelegate(self)
UIView.setAnimationRepeatAutoreverses(false)
UIView.setAnimationRepeatCount(999999)
frame = lab.frame
frame.origin.x = -size.width
lab.frame = frame
UIView.commitAnimations()
相關文章
相關標籤/搜索