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