5

我有一个UIView我创建的自定义,它有几个自定义UIControl实例,它们是非矩形按钮(而不是使用UIButton实例)。我这样做是因为我需要能够绘制非矩形按钮并让它们仅响应非矩形区域中的点击。

因为UIControl不附带 a UILabel,所以我使用 aCATextLayer来添加此功能。我希望我正在绘制的文本(通过设置layer.string等于 an 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替换的更好解决方案吗?

4

0 回答 0