【发布时间】:2020-11-18 06:38:24
【问题描述】:
【问题讨论】:
-
存档? (也许你的意思是“实现”?)
-
所以您只希望顶部是圆角吗?如果这是您想要的,请查看如何使用 Bezier 路径:appcoda.com/rounded-corners-uiview 注意我知道您想要实现,也不想存档。
-
@claude31 是的,谢谢你,这正是我正在寻找的!
【问题讨论】:
根据 claude31 提供的链接,您可以执行以下操作:
private let containerView: UIView = {
let view = UIView()
view.translatesAutoresizingMaskIntoConstraints = false
view.clipsToBounds = true
view.layer.cornerRadius = 28
view.layer.maskedCorners = [.layerMaxXMinYCorner, .layerMinXMinYCorner]//Define the corners you want to round here.
view.backgroundColor = .systemBlue
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
configureUI()
}
private func configureUI() {
view.addSubview(containerView)
NSLayoutConstraint.activate([
containerView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
containerView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
containerView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
containerView.topAnchor.constraint(equalTo: view.topAnchor, constant: 270)
])
}
【讨论】:
如果您使用故事板,请添加:
@IBDesignable 开放类 ShadowView: UIView {
func setupValues(){
self.layer.cornerRadius = self.cornerRadius
self.layer.shadowColor = self.shadowColor.cgColor
self.layer.shadowOffset = self.shadowOffset
self.layer.shadowRadius = self.shadowRadius
self.layer.shadowOpacity = self.shadowOpacity
self.layer.borderWidth = self.borderWidth
self.layer.borderColor = self.borderColor.cgColor
}
open override func prepareForInterfaceBuilder() {
self.setupValues()
}
open override func awakeFromNib() {
self.setupValues()
}
@IBInspectable var cornerRadius: CGFloat = 10
@IBInspectable public var borderWidth: CGFloat = 0.0
@IBInspectable public var borderColor: UIColor = UIColor.color(red: 0, green: 0, blue: 0, alpha: 1.0){
didSet {
self.setupValues()
}
}
@IBInspectable public var shadowColor: UIColor = UIColor.color(red: 0, green: 0, blue: 0, alpha: 1.0) {
didSet {
self.setupValues()
}
}
@IBInspectable public var shadowOffset: CGSize = CGSize(width: 0, height: 4)
@IBInspectable public var shadowRadius: CGFloat = 20.0
@IBInspectable public var shadowOpacity: Float = 0.1
}
【讨论】: