如何使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。这涵盖了这些点。然而,它有一个硬编码的,所以我不完全满意它。