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 замены?

0 ответов

Другие вопросы по тегам