swift - 设置outerBelowCircle CAShapeLayer在View中心的位置
问题描述
我使用 CAShapeLayer 画了一个圆圈,我想将它的中心设置在视图的中心。但是圆圈将在中心线下方创建(见截图),有人可以帮我吗?
let circle = CAShapeLayer()
view.layer.addSublayer(circle)
circle.position = view.center
let circularPath = UIBezierPath(arcCenter: .zero, radius: 100, startAngle: 0, endAngle: 2 * CGFloat.pi, clockwise: true)
circle.path = circularPath.cgPath
我也改变了将它设置在中心的方式,但它不起作用
circle.position = CGPoint(x: view.layer.bounds.midX, y: view.layer.bounds.midY)
解决方案
根据您的屏幕截图考虑以下方法,此方法将解决您的问题。
func showCircle() {
let view = UIView()
let circle = CAShapeLayer()
view.layer.addSublayer(circle)
let positionX = view.center.x
let positionY = view.center.y - 100 // your circle radius
circle.position = CGPoint(x: positionX, y: positionY)
let circularPath = UIBezierPath(arcCenter: .zero, radius: 100, startAngle: 0, endAngle: 2 * CGFloat.pi, clockwise: true)
circle.path = circularPath.cgPath
}
我没有测试过代码。请自行验证。
推荐阅读
- phpunit - PHPUnit - 为什么期望方法调用不起作用?
- java - ArrayList 重复
- python - 加速 Matplotlib
- java - 为什么从 xml 资源中获取字符串并以编程方式获取它?
- php - WooCommerce REST API 使用 meta_data 批量创建产品
- r - 如何根据相同的输入使 renderPlot 在另一个反应之前发生
- mongodb - 一次更新 MongoDB 中的多个文档
- ios - 静态/动态库中的运行时 ObjC 符号冲突
- zabbix - zabbix_agentd 的主机名被更改是不断触发
- javascript - React - Material UI Typography 如何将长字符串分成多行