如何让UILabel淡出而不是在iOS上显示三点省略号?

时间:2013-12-16 09:22:29

标签: ios objective-c uikit uilabel

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

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

UIKit无法提供。

您必须layer.alpha基于as-you-type更改标签{- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string UITextField- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text UITextView,或者你在使用什么,搜索栏等。)

或者,正如DavidRönnqvist建议的那样,如果您不希望隐藏整个标签,可以为其添加叠加层。 或者,您也可以使用透明度更高/更低的颜色更改textColor。有几种方法可以做到......