如何设置突出显示文本的shadowColor?
titleLabel.textColor = [UIColor colorWithRed:20.0f/255.0f green:50.0f/255.0f blue:90.0f/255.0f alpha:1.0f];
titleLabel.highlightedTextColor = [UIColor whiteColor];
titleLabel.shadowColor = [UIColor whiteColor];
titleLabel.shadowOffset = CGSizeMake(0, 1.0);
我正在寻找类似的东西:titleLabel.highlightedTextColor.shadowColor = [UIColor blackColor];
这应该工作:
if(!yourlabel.highlighed)
{
[yourLabel setShadowColor:[UIColor greenColor]];
}
else
{
[yourLabel setShadowColor:[UIColor blueColor]];
}
编辑:UIlabel有一个名为highlight的属性,是一个BOOL。你可以检查它是否真实,并在你想要它的那一刻改变阴影颜色。
我也对Apple的这种疏忽感到恼火,并创建了UILabel
的子类,添加了缺少的highlightedShadowColor
和highlightedShadowOffset
属性。
默认情况下,它只是在突出显示模式下禁用阴影,并将偏移设置为标准偏移的反向。
@interface FTLabel : UILabel
@property(nonatomic, strong) UIColor *highlightedShadowColor;
@property(nonatomic) CGSize highlightedShadowOffset;
@end
@interface FTLabel ()
@property(nonatomic, strong) UIColor *savedShadowColor;
@property(nonatomic) CGSize savedShadowOffset;
@end
@implementation FTLabel
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
[self configure];
}
return self;
}
- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
[self configure];
}
return self;
}
- (void)configure {
self.highlightedShadowColor = nil;
self.highlightedShadowOffset = CGSizeMake(self.shadowOffset.width * (-1), self.shadowOffset.height * (-1));
self.savedShadowColor = self.shadowColor;
self.savedShadowOffset = self.shadowOffset;
}
- (void)setHighlighted:(BOOL)highlighted {
[super setHighlighted:highlighted];
self.shadowColor = self.highlighted ? self.highlightedShadowColor : self.savedShadowColor;
self.shadowOffset = self.highlighted ? self.highlightedShadowOffset : self.savedShadowOffset;
}
@end
我遇到过同样的问题。
我最终做的是在主要的UILabel
下面创建第二个UILabel
作为影子。
不要在主标签和阴影标签上设置阴影。对于阴影标签,将“正常颜色”设置为您想要的阴影颜色,并将突出显示的颜色设置为“清除颜色”。
显然,每次更新主标签时都必须更新阴影标签。在许多情况下,付出的代价并不高。
希望有所帮助!