【发布时间】:2013-12-16 09:22:28
【问题描述】:
如果UILabel 的内容不适合可用空间,iOS 会自动显示三个点。我认为如果应用渐变而不是点,它看起来会更好,它会在靠近右边缘时淡出内容。
是iOS内置的东西还是我必须自己实现?
【问题讨论】:
标签: ios objective-c uikit uilabel
如果UILabel 的内容不适合可用空间,iOS 会自动显示三个点。我认为如果应用渐变而不是点,它看起来会更好,它会在靠近右边缘时淡出内容。
是iOS内置的东西还是我必须自己实现?
【问题讨论】:
标签: ios objective-c uikit uilabel
请试试这个..
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;
}
【讨论】:
这不是 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 更改为具有更多/更少透明度的颜色。有几种方法可以做到...
【讨论】:
UILabel,要么按照你说的添加其他内容。
cell.textLabel.textColor = [UIColor colorWithWhite:0 alpha:0.7];和调整alpha的值吗?