Ios 图层位置没有影响

Ios 图层位置没有影响,ios,swift,Ios,Swift,三个层被赋予相同的父层,但要添加的第一个层上的zPosition值没有任何影响-它保留在后面。为什么会这样?我正在读的书说,子层数组中的位置可以用zPosition值覆盖 import UIKit import PlaygroundSupport extension CGRect { init(_ x:CGFloat, _ y:CGFloat, _ w:CGFloat, _ h:CGFloat) { self.init(x:x, y:y, width:w, height

三个层被赋予相同的父层,但要添加的第一个层上的zPosition值没有任何影响-它保留在后面。为什么会这样?我正在读的书说,子层数组中的位置可以用zPosition值覆盖

import UIKit
import PlaygroundSupport

extension CGRect {
    init(_ x:CGFloat, _ y:CGFloat, _ w:CGFloat, _ h:CGFloat) {
        self.init(x:x, y:y, width:w, height:h)
    }
}

let v0 = UIView(frame: CGRect(0, 0, 500, 500))
v0.backgroundColor = .white

let v1 = UIView(frame: v0.frame)

let lay1 = CALayer()
lay1.backgroundColor = UIColor(red: 1, green: 0.4, blue: 1, alpha: 1).cgColor
lay1.frame = CGRect(113, 111, 132, 194)
lay1.zPosition = 100
v1.layer.addSublayer(lay1)

let lay2 = CALayer()
lay2.backgroundColor = UIColor(red: 0.5, green: 1, blue: 0, alpha: 1).cgColor

lay2.frame = CGRect(41, 56, 132, 194)
v1.layer.addSublayer(lay2)

let lay3 = CALayer()
lay3.backgroundColor = UIColor(red: 1, green: 0, blue: 0, alpha: 1).cgColor
lay3.frame = CGRect(43, 197, 160, 230)
v1.layer.addSublayer(lay3)

v0.addSubview(v1)

PlaygroundPage.current.liveView = v0 

我认为你的代码工作正常。我只是将视图的颜色更改为

lay1.backgroundColor = UIColor.green.cgColor
lay2.backgroundColor = UIColor.blue.cgColor
lay3.backgroundColor = UIColor.red.cgColor
这是输出。您可以看到顶部有z位置的绿色视图(lay1)

此外,在这里玩文字也很有趣:


代码在应用程序中按预期工作。似乎这是游乐场的问题。

如果您设置了其他位置,会怎么样?对于第2层,
lay2.zPosition=90
和第3层
lay3.zPosition=80
?您是否尝试过重构以使用
view.bringSubview(toFront:)
?看起来应该可以了。@GIJOW不,这不能解决问题。@IanWarburton:你的意思是输出不符合你的预期?尝试清除派生数据,从模拟器/设备卸载应用程序,然后尝试在应用程序中重新启动。看起来这是游乐场的问题。@PuneetSharma如何输入这些文字?XCode->Editor->Insert Color Literal。它将插入一个颜色文字。双击它以打开颜色选择器。