0
以下の画像はCAShapeLayer
を使用して作成されています。灰色層は赤色層の副層である。CALayer subLayer bounds丸め誤差?
灰色のレイヤーのエッジをよく見ると、赤いレイヤーのエッジが滲み出ていることがわかります。灰色のレイヤーがその幅を誤って計算しているようです。これは、灰色のレイヤーの幅を赤色のレイヤーの幅に設定し、灰色のレイヤーを赤色のレイヤーのサブレイヤーに設定するため、不可能です。幅を印刷するとき、それらは正確に同じ番号です。
誰かが間違っていて、これを修正する方法を知っていますか?以下のコード。
フレーム幅を調整すると、最終的に特定の値に問題が解決されるため、丸め誤差のように見えます。しかし、丸め誤差はすべての副層で同じでなければならないので、これはまだ意味をなさない。
class MyLayer {
var redLayer = CAShapeLayer()
var grayLayer = CAShapeLayer()
init() {
redLayer.addSublayer(graylayer)
}
func layoutSublayers(_ bounds: CGRect) {
redLayer.frame = bounds
grayLayer.frame = CGRect(x: 0,
y: 0,
width redLayer.bounds.width,
height: redLayer.bounds.height/2)
draw()
}
func draw() {
redLayer.fillColor = UIColor.red.cgColor
redLayer.path = UIBezierPath(rect: redLayer.bounds).cgPath
grayLayer.fillColor = UIColor.darkGray.cgColor
grayLayer.path = UIBezierPath(rect: grayLayer.bounds).cgPath
}
}