如何在 Swift 中以编程方式从 UIView 中删除安全区域?
Posted
技术标签:
【中文标题】如何在 Swift 中以编程方式从 UIView 中删除安全区域?【英文标题】:how to remove safe area from UIView Programmatically in Swift? 【发布时间】:2020-05-30 08:49:56 【问题描述】:这是一个自定义视图,此视图创建一个带有背景颜色的给定框架的正方形。我正在向子视图添加自定义视图,视图正确显示。但我无法覆盖底部安全区域,任何人都可以帮助我以编程方式从底部移除安全区域。
自定义视图类:UIView
override var frame: CGRect
didSet
setNeedsDisplay()
override init(frame: CGRect)
super.init(frame: frame)
self.isOpaque = false
required init?(coder aDecoder: NSCoder)
super.init(coder: aDecoder)
self.isOpaque = false
override func draw(_ rect: CGRect)
UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.7).setFill()
UIRectFill(rect)
let square = UIBezierPath(rect: CGRect(x: 200, y: rect.size.height/2 - 150/2, width:
UIScreen.main.bounds.size.width - 8, height: 150))
let dashPattern : [CGFloat] = [10, 4]
square.setLineDash(dashPattern, count: 2, phase: 0)
UIColor.white.setStroke()
square.lineWidth = 5
square.stroke()
【问题讨论】:
【参考方案1】:考虑以下示例:
class ViewController: UIViewController
private let myView = UIView()
override func viewDidLoad()
super.viewDidLoad()
configureCustomView()
private func configureCustomView()
myView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(myView)
myView.backgroundColor = .systemPurple
NSLayoutConstraint.activate([
myView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
myView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
myView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
myView.heightAnchor.constraint(equalToConstant: 200)
])
结果:
如果您不想越过安全区域,那么您可以在NSLayoutConstraint.activate([...])
中使用myView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor)
。
因此,您实际上不必删除 SafeArea,因为如果您愿意,您可以简单地忽略它们...
【讨论】:
【参考方案2】:如果您想快速完成此操作。 (不是以编程方式)
-
打开故事板。
选择您的 UIView。
-
应取消选择安全区域。
【讨论】:
以上是关于如何在 Swift 中以编程方式从 UIView 中删除安全区域?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中以编程方式在水平线上设置约束? [关闭]
如何在ios swift中以编程方式创建自动布局等宽度约束?