【发布时间】:2019-07-09 02:53:58
【问题描述】:
我正在尝试绘制一条中间有二次曲线的贝塞尔路径。该曲线在 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)
}
谁能告诉我我错过了什么?非常感谢您!
【问题讨论】:
-
上传分析器的屏幕截图,否则人们无事可做
-
@Alexander 抱歉,我还是 swift 新手。你能告诉我探查器到底是什么吗?
-
@Alexander 谢谢你的链接。下面是我刚刚截取的分析器截图的链接:imgur.com/a/Bx9c8WA
-
不相关,但是当您覆盖任何这些视图生命周期方法时,始终调用
super实现也是谨慎的做法。
标签: swift drawing bezier quadratic-curve