如果UILabel
的内容不适合可用空间,iOS会自动显示三个点。我认为它看起来更好,如果不是点,应用渐变,淡出内容,它接近右边缘。
是iOS中内置的东西还是我必须自己实现它?
答案 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
。有几种方法可以做到......