我有一个我创建的自定义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
替换的更好解决方案?