ios - 淡化标签文本的结尾

标签 ios uilabel

我有一个 UILabel,我想淡化字符串的结尾,那将越界。什么是更好的解决方案? 我应该计算标签的宽度,将其与字符串宽度进行比较,如果字符串宽度大于标签的宽度,我应该淡化最后两个字母吗?我到底应该怎么做? 我希望这会很容易。请写下你的解决方案。谢谢! 我更喜欢使用这种方法来计算宽度:

CGRect labelRect = [text
                    boundingRectWithSize:labelSize
                    options:NSStringDrawingUsesLineFragmentOrigin
                    attributes:@{
                     NSFontAttributeName : [UIFont systemFontOfSize:14]
                    }
                    context:nil];

最佳答案

swift 4.0 示例:

    let gradient = CAGradientLayer()

    gradient.frame      = titleLabel.bounds
    gradient.colors     = [UIColor.white.cgColor, UIColor.clear.cgColor]
    gradient.startPoint = CGPoint(x: 0.1, y: 0.0)
    gradient.endPoint   = CGPoint(x: 0.95, y: 0.0)

    label.lineBreakMode = .byClipping
    label.layer.mask = gradient

结果:

result

关于ios - 淡化标签文本的结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24365330/

相关文章:

ios - Swift:避免强制展开常量变量

ios - 无法将操作连接到 Xcode 6.1.1 中的现有函数

ios - SwiftUI 动画打破屏幕旋转

swift - 如何在 Swift 中将 NSUserDefault 与 PickerView 一起使用?

iphone - 更改 UILabel 文本会弄乱动画吗?

ios - "Cannot assign value of type ' 无效 ' to type ' PDFAction?为 PDFAnnotation 设置操作时出现 '"错误

iphone - CTLine 有 "string access"是什么意思?

ios - 在 map View 上显示比例

ios - 在 UILabel 中格式化多行文本?

ios - 更改选项卡栏外观