CATextLayer忽略了NSShadow?

时间:2016-09-01 14:16:19

标签: ios objective-c 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 个答案:

没有答案