我有UIButton
,我在其上设置UIImage
(使用set(_:for:)
方法)。之后,我在上面添加了一些带有文字的标签(它应该是白色的)。问题是:当我使用一些颜色鲜艳(接近白色)的照片时,很难看到文字中的某些字符。这是它的样子(按钮不是很大,因此图像的质量也很低):
我尝试在按钮和标签之间添加UIView
并操纵其alpha
,但这并没有帮助。如果你知道如何解决问题(不改变文字的颜色),我将非常感谢你的帮助。
答案 0 :(得分:1)
最常用的方法是将标签的背景颜色设置为部分透明的黑色。然后可以围绕标签角来看看。
let label = ... // your label
label.backgroundColor = UIColor(white: 0.0, alpha: 0.4) // adjust alpha as desired
label.layer.cornerRadius = 4 // adjust as desired
另一个选项,不是在标签上添加背景,而是使用属性文本作为标签,并为白色文本添加黑色轮廓。
let attrs: [NSAttributedStringKey: Any] = [
.foregroundColor: UIColor.white,
.strokeColor: UIColor.black,
.strokeWidth: -2.0,
.font: UIFont.systemFont(ofSize: 20) // Use whatever font you want
]
let attrStr = NSAttributedString(string: "Grand Royal", attributes: attrs)
label.attributedText = attrStr
另一种选择是用阴影设置标签:
let label = ... // your label
label.shadowColor = .black
label.shadowSize = CGSize(width: 1, height: 1)
可以使用属性文本创建阴影,这可以为您提供更多控制:
let shadow = NSShadow()
shadow.shadowColor = UIColor.black
shadow.shadowOffset = CGSize(width: 0, height: 0)
shadow.shadowBlurRadius = 3
let attrs: [NSAttributedStringKey: Any] = [
.foregroundColor: UIColor.white,
.shadow: shadow,
.font: UIFont.systemFont(ofSize: 40)
]
let attrStr = NSAttributedString(string: "Grand Royal", attributes: attrs)
label.attributedText = attrStr
这会在文本周围留下光环。调整阴影属性以满足您的需求。