如何将特定观点置于所有其他观点之上?

How to bring a specifc view above all others?

我有一个圆圈和一个 sideView,我想简单地将 sideView 放在我的圆圈上方,但我尝试使用 sideView.bringSubvieToFront(view) 等几个命令,但这不起作用。我还检查了情节提要中视图的顺序,以确保我的 sideView 位于最后一个位置,这对两者都没有帮助。看起来基本视图数字总是高于所有其他看起来很奇怪的视图。有什么简单的方法可以把这个 sideView 放在圆的顶部?

@IBOutlet weak var sideView: UIView!

let shapeLayer = CAShapeLayer()


override func viewDidLoad() {
    super.viewDidLoad()
    
    sideView.bringSubviewToFront(view)

    let center = view.center
    
    let circularPath = UIBezierPath(arcCenter: center, radius: 125, startAngle: -CGFloat.pi / 2, endAngle: 2*CGFloat.pi - CGFloat.pi/2, clockwise: true)
    
    shapeLayer.path = circularPath.cgPath
    shapeLayer.lineWidth = 10
    //shapeLayer.fillColor = UIColor.clear.cgColor
    shapeLayer.fillColor = UIColor.red.cgColor
    shapeLayer.lineCap = CAShapeLayerLineCap.round
    view.layer.addSublayer(shapeLayer)
    shapeLayer.strokeColor = UIColor.green.cgColor
}

}

这里有两个问题。

  1. sideView.bringSubviewToFront(view)

您的 sideView 是控制器视图的子视图,而不是相反。所以你应该打电话给view.bringSubviewToFront(sideView)。见documentation:参数为子视图

  1. 代码顺序

您试图在添加其他子视图和层之前将子视图移到前面。后者最终会被放在上面。添加其他子视图后移动 bringSubviewToFront