1

真ん中に二次曲線があるベジェパスを描こうとしています。曲線は iPhone 8 および XS ではうまく機能しますが、他のデバイスでは応答しません (つまり、正しくレンダリングされません)。

以下はiPhone XSのカーブの画像です(正解)

ここに画像の説明を入力

および iPhone XR (不正解)

ここに画像の説明を入力

ビューの制約を使用して行の中間値を取得しようとしましたが、どういうわけかまだ機能していません

パスを描画しているコードは次のとおりです。

//self.viewTabBorder is the grey line, which is a uiview with 1 pixel height
override func viewWillAppear(_ animated: Bool) {
        let path = UIBezierPath()
        path.move(to: CGPoint(x: self.viewTabBorder.center.x - self.btnHome.frame.width + 20, y: 0))
        path.addQuadCurve(to: CGPoint(x: self.viewTabBorder.center.x + self.btnHome.frame.size.width - 20, y: 0), controlPoint: CGPoint(x: self.viewTabBorder.center.x, y: self.btnHome.frame.height + 5))
        path.addLine(to: CGPoint(x: self.viewTabBorder.center.x + self.btnHome.frame.size.width - 20, y: 0))

        let line = CAShapeLayer()
        line.path = path.cgPath
        line.strokeColor = UIColor(red: 224, green: 224, blue: 224).cgColor
        line.fillColor = UIColor.white.cgColor
        self.view.layer.addSublayer(line)
        self.viewTabBorder.layer.addSublayer(line)
    }

誰かが私が欠けているものを見せてもらえますか? 事前にどうもありがとうございました!

4

1 に答える 1