我无法弄清楚如何在标签上编码投影。我有一个改变的分数标签,所以只有带有阴影的photoshopping文本是不可能的。我需要对其进行编码,以便它始终在文本后面自动显示模糊的阴影。任何人都可以提供一些例子或帮助吗?
人们说这是重复的,"重复"是关于UIView的阴影,我的是关于UILabel。这不是一回事。
答案 0 :(得分:47)
尝试一下 - 您可以直接在Playground页面中运行它:
import UIKit
import PlaygroundSupport
let container = UIView(frame: CGRect(x: 0, y: 0, width: 600, height: 400))
container.backgroundColor = UIColor.lightGray
PlaygroundPage.current.liveView = container
var r = CGRect(x: 40, y: 40, width: 300, height: 60)
let label = UILabel(frame: r)
label.font = UIFont.systemFont(ofSize: 44.0)
label.textColor = .white
label.frame = r
label.text = "Hello Blur"
container.addSubview(label)
label.layer.shadowColor = UIColor.black.cgColor
label.layer.shadowRadius = 3.0
label.layer.shadowOpacity = 1.0
label.layer.shadowOffset = CGSize(width: 4, height: 4)
label.layer.masksToBounds = false
使用不同的阴影颜色,不透明度,半径和偏移值
结果:
答案 1 :(得分:9)
答案 2 :(得分:9)
您可以编写扩展程序并使用它。将扩展代码放在ViewController类的之外。
extension UILabel {
func textDropShadow() {
self.layer.masksToBounds = false
self.layer.shadowRadius = 2.0
self.layer.shadowOpacity = 0.2
self.layer.shadowOffset = CGSize(width: 1, height: 2)
}
static func createCustomLabel() -> UILabel {
let label = UILabel()
label.textDropShadow()
return label
}
}
在您的标签上只需调用此方法
myLabel.textDropShadow()
答案 3 :(得分:2)
Swift 4 - 带阴影参数的扩展:
// Label Shadow
extension UILabel {
func lblShadow(color: UIColor , radius: CGFloat, opacity: Float){
self.textColor = color
self.layer.masksToBounds = false
self.layer.shadowRadius = radius
self.layer.shadowOpacity = opacity
self.layer.shadowOffset = CGSize(width: 1, height: 1)
self.layer.shouldRasterize = true
self.layer.rasterizationScale = UIScreen.main.scale
}
}
在您的标签上只需调用此方法
let titleColor = UIColor(red:0.08, green:0.08, blue:0.08, alpha:1.0)
titleLbl.lblShadow(color: titleColor, radius: 3, opacity: 0.25)
答案 4 :(得分:2)
快速4 ,使用扩展名IBInspectable
<%= form_for project_message, :remote => true do |form| %>
答案 5 :(得分:0)
可以正常工作,但可以向所有标签而不是文本添加阴影。
在这种情况下:
ViewController类:UIViewController {
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
let shadow = NSShadow()
shadow.shadowColor = UIColor.blue
shadow.shadowBlurRadius = 10
let attrs: [NSAttributedString.Key: Any] = [
.font: UIFont.systemFont(ofSize: 36),
.foregroundColor: UIColor.red,
.shadow: shadow
]
let s = "MY TEXT"
let attributedText = NSAttributedString(string: s, attributes: attrs)
self.label.attributedText = attributedText
}
}
您将获得:
注意:,您必须每次添加属性字符串,因为shadow是字符串的属性,而不是标签的属性,否则,您还可以派生类并覆盖“ setText”。 (将对象内的属性保留在可以在init / setter上设置的属性中)
答案 6 :(得分:0)
U可以为所有UIView子类创建扩展方法。
extension UIView {
func drawShadow(offset: CGSize, opacity: Float = 0.25, color: UIColor = .black, radius: CGFloat = 1) {
layer.masksToBounds = false
layer.shadowColor = color.cgColor
layer.shadowOffset = offset
layer.shadowOpacity = opacity
layer.shadowRadius = radius
}
}