Ios CATextLayer忽略了阴影?

Ios CATextLayer忽略了阴影?,ios,objective-c,catextlayer,nsshadow,Ios,Objective C,Catextlayer,Nsshadow,我有一个我创建的自定义UIView,它有多个自定义UIControl实例,这些实例是非矩形按钮(而不是使用UIButton实例)。我这样做是因为我需要能够绘制非矩形按钮,并让它们只在非矩形区域响应点击 因为UIControl没有UILabel,所以我使用CATextLayer来添加此功能。我希望我正在绘制的文本(通过将layer.string设置为一个NSAttributedString)应用阴影,但是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};
也就是说,除了
NSShadow
之外,
CATextLayer
按预期显示。因此,上述代码的工作原理与此代码完全相同(据我所知):

NSMutableParagraphStyle *s  = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
s.lineSpacing               = 0.9f;
NSDictionary *textAttrs     = @{NSFontAttributeName           : [UIFont someFont],
                                NSParagraphStyleAttributeName : [s copy]};
有人确切知道我所做的事情是否有效吗?我正在使用iOS9.3模拟器进行测试,所以我认为这不是iOS10测试版的问题


如果不是这样的话,有谁知道非矩形
ui按钮
替换的更好解决方案吗?

谢谢,这很有帮助。老问题,但最近iOS(>10.0)的CATextLayer仍然忽略NSShadow。仍然忽略iOS(>12.0)中的NSShadow