突出显示阴影颜色

问题描述 投票:3回答:3

如何设置突出显示文本的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];

iphone objective-c ios cocoa-touch uikit
3个回答
1
投票

这应该工作:

 if(!yourlabel.highlighed)
 {
     [yourLabel setShadowColor:[UIColor greenColor]];
 }
 else
 {
     [yourLabel setShadowColor:[UIColor blueColor]];
 }

编辑:UIlabel有一个名为highlight的属性,是一个BOOL。你可以检查它是否真实,并在你想要它的那一刻改变阴影颜色。


2
投票

我也对Apple的这种疏忽感到恼火,并创建了UILabel的子类,添加了缺少的highlightedShadowColorhighlightedShadowOffset属性。

默认情况下,它只是在突出显示模式下禁用阴影,并将偏移设置为标准偏移的反向。

@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

0
投票

我遇到过同样的问题。

我最终做的是在主要的UILabel下面创建第二个UILabel作为影子。

不要在主标签和阴影标签上设置阴影。对于阴影标签,将“正常颜色”设置为您想要的阴影颜色,并将突出显示的颜色设置为“清除颜色”。

显然,每次更新主标签时都必须更新阴影标签。在许多情况下,付出的代价并不高。

希望有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.