突出显示阴影颜色

时间:2011-10-17 11:07:35

标签: iphone objective-c ios cocoa-touch uikit

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

的内容

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

这应该有效:

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

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

答案 2 :(得分:0)

我遇到了同样的问题。

我最后做的是在主要UILabel下创建第二个UILabel以充当阴影。

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

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

希望有所帮助!