如何使标签的文字在图像上看起来很好?

时间:2017-11-23 17:17:04

标签: ios swift uibutton uiimage uilabel

我有UIButton,我在其上设置UIImage(使用set(_:for:)方法)。之后,我在上面添加了一些带有文字的标签(它应该是白色的)。问题是:当我使用一些颜色鲜艳(接近白色)的照片时,很难看到文字中的某些字符。这是它的样子(按钮不是很大,因此图像的质量也很低):

enter image description here

我尝试在按钮和标签之间添加UIView并操纵其alpha,但这并没有帮助。如果你知道如何解决问题(不改变文字的颜色),我将非常感谢你的帮助。

1 个答案:

答案 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

这会在文本周围留下光环。调整阴影属性以满足您的需求。