выделенный цвет тени - PullRequest
       2

выделенный цвет тени

3 голосов
/ 17 октября 2011

Как установить 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 ]

2 голосов
/ 17 ноября 2012

Я тоже был недоволен этим упущением со стороны 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
1 голос
/ 17 октября 2011

Это должно работать:

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

EDIT: UIlabel имеет свойство с подсветкой и является BOOL. Вы можете проверить, правда это или нет, и изменить цвет тени в тот момент, когда вы хотите, чтобы это было сделано.

0 голосов
/ 31 октября 2012

У меня была такая же проблема.

В конце концов я создал вторую UILabel под основной UILabel в качестве тени.

Не устанавливайте тени на основных и теневых метках. Для метки тени установите «Нормальный цвет» в соответствии с тем, каким вы хотели, чтобы ваш цвет тени был, и установите выделенный цвет на «Чистый цвет».

Очевидно, вы должны обновлять теневую метку каждый раз, когда обновляете основную метку. Не большая цена, чтобы заплатить во многих случаях.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...