CATextLayer игнорирует NSShadow?
У меня есть обычай UIView
что я создал, что имеет несколько пользовательских UIControl
экземпляры, которые являются непрямоугольными кнопками (вместо использования UIButton
экземпляры). Я делаю это, потому что мне нужно уметь рисовать непрямоугольные кнопки и заставлять их реагировать на нажатия только в их непрямоугольных областях.
Так как UIControl
не приходит с UILabel
Я использую CATextLayer
добавить в эту функциональность. Я хотел бы текст, который я рисую (установив layer.string
равный NSAttributedString
) чтобы к нему применили тень, но кажется, что CATextLayer
игнорирует любой NSShadow
атрибутов.
Я не могу найти какую-либо документацию, чтобы сказать мне в любом случае, но на практике следующее не работает:
NSMutableParagraphStyle *s = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
s.lineSpacing = 0.9f;
NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor orangeColor];
shadow.shadowOffset = CGSizeMake(10,10);
NSDictionary *textAttrs = @{NSFontAttributeName : [UIFont someFont],
NSParagraphStyleAttributeName : [s copy],
NSShadowAttributeName : shadow};
Это CATextLayer
отображается так, как вы ожидаете, за исключением NSShadow
, Итак, приведенный выше код работает точно так же (насколько я могу судить), как этот код:
NSMutableParagraphStyle *s = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
s.lineSpacing = 0.9f;
NSDictionary *textAttrs = @{NSFontAttributeName : [UIFont someFont],
NSParagraphStyleAttributeName : [s copy]};
Кто-нибудь знает наверняка, должно ли то, что я делаю, работать? Я тестирую с использованием симулятора iOS 9.3, поэтому не думаю, что это бета-версия iOS 10.
Если это не работает, кто-нибудь знает лучшее решение для непрямоугольной UIButton
замены?