iOS 界面生成器中的阴影视图
iOS shadow view in interface builder
我正在尝试通过界面生成器向某些视图添加阴影。我似乎无法让阴影影响我的观点。我查看的所有资源都指向相同的代码,所以我不确定自己做错了什么。
界面生成器
Interface Builder 扩展代码
import Foundation
import UIKit
extension UIView {
//cut irrelevant code for SO Question
@IBInspectable
var masksToBounds: Bool {
get {
return layer.masksToBounds
}
set {
layer.masksToBounds = newValue
}
}
// Shadow handling
@IBInspectable
var shadowColor: UIColor? {
get {
if let color = layer.shadowColor {
return UIColor(cgColor: color)
}
return nil
}
set {
if let color = newValue {
layer.shadowColor = color.cgColor
} else {
layer.shadowColor = nil
}
}
}
@IBInspectable
var shadowOpacity: Float {
get {
return layer.opacity
}
set {
layer.opacity = newValue
}
}
@IBInspectable
var shadowRadius: CGFloat {
get {
return layer.shadowRadius
}
set {
layer.shadowRadius = newValue
}
}
@IBInspectable
var shadowOffset: CGSize {
get {
return layer.shadowOffset
}
set {
layer.shadowOffset = newValue
}
}
}
视图布局
这是结果
我猜这是您要添加阴影的自定义搜索栏。我猜它不可见的原因是因为您在控制器和情节提要中的视图大小相同。尝试使情节提要视图中有一个容器视图,并在情节提要视图中添加一些填充,并将该阴影添加到该容器视图中。这可能会显示一些结果。
您的 shadowOpacity
属性 正在访问错误的层 属性。它在应该 layer.shadowOpacity
时访问 layer.opacity
。另外,您的 shadowRadius
太大了,可能应该在 5 左右(当然,这取决于您要做什么),而不是 500。
我正在尝试通过界面生成器向某些视图添加阴影。我似乎无法让阴影影响我的观点。我查看的所有资源都指向相同的代码,所以我不确定自己做错了什么。
界面生成器
Interface Builder 扩展代码
import Foundation
import UIKit
extension UIView {
//cut irrelevant code for SO Question
@IBInspectable
var masksToBounds: Bool {
get {
return layer.masksToBounds
}
set {
layer.masksToBounds = newValue
}
}
// Shadow handling
@IBInspectable
var shadowColor: UIColor? {
get {
if let color = layer.shadowColor {
return UIColor(cgColor: color)
}
return nil
}
set {
if let color = newValue {
layer.shadowColor = color.cgColor
} else {
layer.shadowColor = nil
}
}
}
@IBInspectable
var shadowOpacity: Float {
get {
return layer.opacity
}
set {
layer.opacity = newValue
}
}
@IBInspectable
var shadowRadius: CGFloat {
get {
return layer.shadowRadius
}
set {
layer.shadowRadius = newValue
}
}
@IBInspectable
var shadowOffset: CGSize {
get {
return layer.shadowOffset
}
set {
layer.shadowOffset = newValue
}
}
}
视图布局
这是结果
我猜这是您要添加阴影的自定义搜索栏。我猜它不可见的原因是因为您在控制器和情节提要中的视图大小相同。尝试使情节提要视图中有一个容器视图,并在情节提要视图中添加一些填充,并将该阴影添加到该容器视图中。这可能会显示一些结果。
您的 shadowOpacity
属性 正在访问错误的层 属性。它在应该 layer.shadowOpacity
时访问 layer.opacity
。另外,您的 shadowRadius
太大了,可能应该在 5 左右(当然,这取决于您要做什么),而不是 500。