我有一个UICollectionView,其中单元格包含UILabel并且有一个背景视图,它是一个UIImage。标签背景清晰。我的问题是,当文本颜色与文本出现的图像区域中的颜色之间几乎没有对比时,文本的片段可能变得难以阅读。我怀疑有一些技术可以用来帮助解决这个问题(带有黑色边框的白色文字可能吗?可能吗?怎么样?)。有人请告诉我吗?
首先编辑:
我试过了@EssamMohamed / @AbdelahadDarwish的答案,但它没有用。我可能做错了。
我正在使用.xib文件和自定义类。这是自定义类:
class PointOfInterestCell: UICollectionViewCell {
@IBOutlet weak var nameLabel: UILabel! {
didSet {
//nameLabel.textColor = UIColor.tohTerracotaColor()
}
}
@IBOutlet weak var distanceLabel: UILabel! {
didSet {
let strokeTextAttributes = [
NSStrokeColorAttributeName : UIColor.black,
NSForegroundColorAttributeName : UIColor.white,
NSStrokeWidthAttributeName : -1.0,
] as [String : Any]
let text = distanceLabel.text ?? "????"
distanceLabel.attributedText = NSAttributedString(string: text, attributes: strokeTextAttributes)
}
}
}
答案 0 :(得分:2)
我认为使用[color 1]文本和[color 2]笔划,其中颜色1和颜色2是对比颜色将是好主意(补色方案),你可以从色轮中选择这两种颜色的颜色面对面。
如果您搜索有关如何进行描边的方法,请查看link以获取帮助。
答案 1 :(得分:0)
您可以使用label的attributesText
get1()
/////////
//以及何时使用
import UIKit
@IBDesignable
class StrockLabel: UILabel {
override init(frame: CGRect) {
super.init(frame: CGRect.zero)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override var text: String?{
didSet{
let strokeTextAttributes = [
NSStrokeColorAttributeName : UIColor.black,
NSForegroundColorAttributeName : UIColor.white,
NSStrokeWidthAttributeName : -1.0,
] as [String : Any]
let textStr = text ?? "????"
self.attributedText = NSAttributedString(string: textStr, attributes: strokeTextAttributes)
}
}
/*
// Only override draw() if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func draw(_ rect: CGRect) {
// Drawing code
}
*/
}