Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使UILabel淡出,而不是在iOS上显示三点省略号?_Ios_Objective C_Uikit_Uilabel - Fatal编程技术网

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

如何使UILabel淡出,而不是在iOS上显示三点省略号?,ios,objective-c,uikit,uilabel,Ios,Objective C,Uikit,Uilabel,如果UILabel的内容不适合可用空间,iOS会自动显示三个点。我认为如果用渐变来代替点的话,效果会更好。渐变会使内容在靠近右边缘时淡出。 是iOS内置的还是我必须自己实现?这是UIKit无法提供的 键入时,您必须在的基础上更改标签的层.alpha(意思是-(BOOL)textField:(UITextField*)textField应该更改charactersinrange:(NSRange)range replacementString:(NSString*)string用于UITextFi

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

这是UIKit无法提供的

键入时,您必须在
的基础上更改标签的
层.alpha
(意思是
-(BOOL)textField:(UITextField*)textField应该更改charactersinrange:(NSRange)range replacementString:(NSString*)string
用于
UITextField
-(BOOL)textView:(UITextView*)textView应更改textinrange:(NSRange)范围替换text:(NSString*)text
用于
UITextView
,或您正在使用的搜索栏等)

或者,正如David Rönnqvist所建议的,如果您不想隐藏整个标签,可以在其上添加一个覆盖层。 或者您也可以使用透明度更高/更低的颜色更改
textColor
。有几种方法……请尝试一下

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;
}

alpha属性本身不会这样做,它会更改整个标签的alpha。你必须遮罩或覆盖标签的末端,以使末端褪色。任何最适合他的东西-要么是整个
UILabel
,要么像你说的那样添加其他东西。我想我正在寻找一种方法,将子层或遮罩层添加到UITableViewCell的内容视图中。但是直到现在,我得到了非常奇怪的结果。您是否尝试过设置
cell.textlab.textColor=[uicolorWithWhite:0 alpha:0.7]
和调整
alpha
值?我现在在单元格的内容视图中添加了一个白色不透明的CALayer。左边我有一个CAGradientLayer,它从白色alpha 0渐变为白色alpha 1。这涵盖了这些点。然而,它有一个硬编码的,所以我不完全满意它。