UIColor
, который вы выбираете из каталога активов, - динамический . Это означает, что значения его компонентов RGB зависят от значения [UITraitCollection currentTraitCollection]
. Каждый раз, когда вы запрашиваете компоненты, цвет разрешается сам на основе currentTraitCollection
.
. Вы не показывали реализацию метода -colorAsHexString:
, но он должен получать компоненты RGB из цвета. каким-то образом.
Следовательно, вы хотите вызвать -colorAsHexString:
в то время, когда вы установили currentTraitCollection
, например:
UIColor *dynamicColor = [UIColor colorNamed:@"whiteOrBlack"];
[self.traitCollection performAsCurrentTraitCollection:^{
NSLog(@"Color: %@", [self colorAsHexString:dynamicColor]);
}];
(Еще лучше, вы могли бы поставитьвызов performAsCurrentTraitCollection
внутри реализации -colorAsHexString:
, если это имеет смысл в вашем конкретном случае.)
Вот как получить разрешенный, не динамический цвет для определенной коллекции признаков:
UIColor *dynamicColor = [UIColor colorNamed:@"whiteOrBlack"];
UIColor *resolvedColor = [dynamicColor resolvedColorWithTraitCollection:self.traitCollection];