swift中的跑马灯实现(导航栏)

首先是懒加载了runLabel:

  private lazy var runLabel : UILabel={
      let label = UILabel()
      label.sizeToFit()
    
     label.font = UIFont(name: kMyFontName, size: kFontSize14)
     label.textColor = UIColor.blackColor()
     return label
 }()

然后在viewDidLoad中实现addsubView方法:

    /// 跑马灯
    self.navigationItem.titleView?.addSubview(runLabel)
    //设置label的原始位置
    runLabel.frame.origin.x = kScreenWidth

    
    UIView.beginAnimations(self.productName, context: nil)
    UIView.setAnimationDuration(16)
    UIView.setAnimationCurve(UIViewAnimationCurve.Linear)
    UIView.setAnimationDelegate(self)
    UIView.setAnimationRepeatCount(999999)
    
    runLabel.frame.origin.x = -runLabel.frame.size.width
    UIView .commitAnimations()

另外如果文字过长的话建议直接计算文字宽度(做个简单的分类即可)

extension String {
  func getTitleW() -> CGFloat{
     /// 计算文字宽度
     var dict:[String:AnyObject] = [:]
      dict[NSFontAttributeName] = UIFont(name: kMyFontName, size:   kFontSize14)
          return NSString(string:     self).boundingRectWithSize(CGSizeMake(999, 14), options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: dict, context: nil).size.width + 24

    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 3,773评论 2 7
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,634评论 25 709
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,613评论 6 30
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,164评论 5 13
  • 在把写的东西push到GitHub上的时候,突然push不了,各种百思不得解。 最后发现了问题,原来是我要push...
    ed75f7f7d38d阅读 266评论 0 0