ios – UILabel的动画文字更改

我想在UILabel中动画文字更改.

例如:旧文本向上移动,新文本从底部移动.

我已经意识到我需要标签.一个是旧的,一个是新的文本.第二个UILabel位于第一个.然后两个动画.

但是,如果在第一个标签上移动超过框架的顶部,那么您如何切断第一个标签

解决方法

使用UIView扩展

您不需要多个标签.您可以使用单个标签进行动画制作:
– 利用内置的CALayer动画和UIView扩展
– 在故事板中,将UILabel放在UIView中,并带有Clip Subviews标志(脚注).
– pushTransition适用于大多数UIView

扩展

// Usage: insert view.pushTransition right before changing content
extension UIView {
    func pushTransition(_ duration:CFTimeInterval) {
        let animation:CATransition = CATransition()
        animation.timingFunction = camediatimingFunction(name:
            kcamediatimingFunctionEaseInEaSEOut)
        animation.type = kCATransitionPush
        animation.subtype = kCATransitionFromTop
        animation.duration = duration
        layer.add(animation,forKey: kCATransitionPush)
    }
}

Swift 2及更早版本(请参阅Steve Baughman评论):使用self.layer.addAnimation(animation,forKey:kCATransitionPush)

pushTransition调用

if let aLabel = label {
    aLabel.pushTransition(0.4)
    aLabel.text = "\(count)"
    count += 1
}

3.在行动

您甚至可以控制曲线,持续时间和方向†.

(†)剪切是预期效果的重要步骤.

►在GitHub查找此解决方案,并在Swift Recipes上查看更多详细信息.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...