美文网首页
由下至上滚动效果的Label

由下至上滚动效果的Label

作者: 会编程的男神俊 | 来源:发表于2016-06-29 12:30 被阅读103次

1、封装label

import UIKit
class MyFlashLabel: UIView {
    var innerContainer: UIView
    //计算text长度并返回
    func evaluateContentWidth(text: String) -> CGFloat {
        var height: CGFloat = 0.0
        let options: NSStringDrawingOptions = NSStringDrawingOptions.UsesLineFragmentOrigin
        if text.characters.count > 0 {
            let attributedDic = [NSFontAttributeName : UIFont.systemFontOfSize(12.0)]
            let size: CGSize = text.boundingRectWithSize(CGSizeMake(self.bounds.size.width - 20,CGFloat(MAXFLOAT)), options: options, attributes:attributedDic, context: nil).size
            height = size.height
        }
        return height
    }
    
    init(frame: CGRect, text: String) {
        self.innerContainer = UIView()
        super.init(frame: frame)
        self.innerContainer = UIView(frame: self.bounds)
        self.innerContainer.backgroundColor = UIColor.clearColor()
        self.clipsToBounds = true
        self.backgroundColor = UIColor.yellowColor()
        self.addSubview(self.innerContainer)
        print(self.subviews.count)
        self.flashAnimation(text)
        
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    
    // 动画
    func flashAnimation(text: String) {
        self.innerContainer.layer.removeAnimationForKey("move")
        let height: CGFloat = self.evaluateContentWidth(text)
        let label1: UILabel = UILabel(frame: CGRectMake(10,0,self.bounds.size.width - 10,height))
        label1.text = text
        label1.numberOfLines = 0
        label1.textColor = UIColor.greenColor()
        label1.font = UIFont.systemFontOfSize(12.0)
        label1.backgroundColor = UIColor.clearColor()
        self.innerContainer.addSubview(label1)
        
        if height > self.bounds.size.height {
            let label2: UILabel = UILabel(frame: CGRectMake(10,height + 5,self.bounds.size.width - 10,height))
            label2.text = text
            label2.numberOfLines = 0
            label2.backgroundColor = UIColor.clearColor()
            label2.font = UIFont.systemFontOfSize(12.0)
            label2.textColor = UIColor.greenColor()
            self.innerContainer.addSubview(label2)
            
            let moveAnimation: CAKeyframeAnimation = CAKeyframeAnimation(keyPath: "position.y")
            moveAnimation.keyTimes = [0.0,1.0]
            moveAnimation.duration = Double(height)/5.0
            moveAnimation.values = [0,-height - 5]
            moveAnimation.repeatCount = MAXFLOAT
            moveAnimation.timingFunction = CAMediaTimingFunction(name: "linear")
            self.innerContainer.layer.addAnimation(moveAnimation, forKey: "move")
        }
        
        
    }
}

2、添加到指定控制器

let labelView: MyFlashLabel = MyFlashLabel(frame: CGRectMake(20, 100, 280, 100), text: "\n滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧\n滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧\n滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧滚动吧")
self.view.addSubview(labelView)

相关文章

  • 由下至上滚动效果的Label

    1、封装label 2、添加到指定控制器

  • iOS文字颜色渐变透明

    渐变透明这种效果的文字一般都在可滚动的Label上,这样的效果能使Label看起来更加美观,同时可以提醒用户,还有...

  • cocos creator项目实战【滚动的数字】教程

    待完善,实现多位数的滚动效果) x的ccc引擎的label组件已经自带简单的数字滚动效果,准备自定义字体配合lab...

  • iOS滚动label显示效果

    关于滚动 label 效果,大家应该都不陌生,在移动设备寸土寸金的显示屏中可以显示更多的内容,今天给大家带来一个滚...

  • iOS简单的滚动label效果

    滚动通知,最近有人跟我说滚动通知怎么设置都不成功,就是类似于跑马灯一样的效果,其实这是一个很简单的功能。我们就用U...

  • IOS实战 (3) 之 水平 循环滚动文本

    实现效果## 可以将 Label 变成自定义的 View可 滚动播放 View 实现思路## 1.UIScroll...

  • 循环滚动展示 label

    循环滚动展示 label业务需要做了一个上下滚动展示的文字广告位,类似轮播图的效果 Github 上的 Demo ...

  • iOS 广告滚动效果

    滚动原理 之前项目有一个简单的广告滚动效果,就自己动手写了一个,比较简单,原理就是两个label的循环替换,可以向...

  • 原生js滚动动画

    scrollTop:元素滚动至上面的距离 scrollHeight:元素滚动区域的高度 clientHeight:...

  • GradientDrawable 滚动修改渐变

    实现目标效果 分析 1、默认从上到下,是由黑到透明效果2、滚动的时候,只是将透明部分变成黑色 xml 动态代码 关...

网友评论

      本文标题:由下至上滚动效果的Label

      本文链接:https://www.haomeiwen.com/subject/lrcxjttx.html