【问题标题】:How to make UILabel fade out instead of showing the three dots ellipsis on iOS?如何使UILabel淡出而不是在iOS上显示三点省略号?
【发布时间】:2013-12-16 09:22:28
【问题描述】:

如果UILabel 的内容不适合可用空间,iOS 会自动显示三个点。我认为如果应用渐变而不是点,它看起来会更好,它会在靠近右边缘时淡出内容。 是iOS内置的东西还是我必须自己实现?

【问题讨论】:

    标签: ios objective-c uikit uilabel


    【解决方案1】:

    请试试这个..

    label.lineBreakMode = NSLineBreakByClipping;
    label.numberOfLines = 1;
    CGSize size;
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
    
        size = [label.text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:label.font, NSFontAttributeName, nil]];
    } else {
    
        size = [label.text sizeWithFont:label.font];
    }
    
    if (size.width > label.frame.size.width) {
    
        CAGradientLayer *gradLayer=[CAGradientLayer layer];
    
        gradLayer.frame = label.layer.bounds;
    
        [gradLayer setColors:[NSArray arrayWithObjects:(id)([UIColor blackColor].CGColor), (id)([UIColor clearColor].CGColor),nil]];
        gradLayer.startPoint = CGPointMake(0.75, 0.0);
        gradLayer.endPoint=CGPointMake(1.0, 0.0);
        label.layer.mask = gradLayer;
    
    } else {
        label.layer.mask = nil;
    }
    

    【讨论】:

      【解决方案2】:

      这不是 UIKit 提供的。

      您必须在as-you-type 的基础上更改标签的layer.alpha(意思是- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 用于UITextField- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 用于UITextView,或者您使用的任何东西,搜索栏等)

      或者,正如 David Rönnqvist 所建议的,如果您不希望隐藏整个标签,则可以为其添加叠加层。 或者,您也可以将textColor 更改为具有更多/更少透明度的颜色。有几种方法可以做到...

      【讨论】:

      • alpha 属性本身不会这样做,它会更改整个标签的 alpha。您必须遮盖或覆盖标签的末端才能使末端褪色。
      • 任何最适合他的 - 要么是整个 UILabel,要么按照你说的添加其他内容。
      • 我想我正在寻找一种将子层或遮罩层添加到 UITableViewCell 的内容视图的方法。但是直到现在我得到了非常奇怪的结果。
      • 你试过设置cell.textLabel.textColor = [UIColor colorWithWhite:0 alpha:0.7];和调整alpha的值吗?
      • 我现在添加了一个 CALayer 到单元格的内容视图中,它是白色不透明的。左边我有一个 CAGradientLayer,它从白色 alpha 0 渐变到白色 alpha 1。这覆盖了点。但是,它有一个硬编码,所以我对它并不完全满意。
      猜你喜欢
      • 1970-01-01
      • 2019-10-23
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2012-04-13
      • 2014-02-15
      • 1970-01-01
      相关资源
      最近更新 更多