Я пытаюсь добавить CAShapeLayer в меньший UIView на главном экране (приложение с одним представлением).У меня есть слой формы, анимированный и реагирующий на жест касания, чтобы начать рисовать его.Но он рисуется из центра основного вида, и мне нужно иметь возможность его перемещать и ограничивать в целях макета.Я видел другой пост, у которого, казалось, были те же самые проблемы, но я думаю, что запутал себя больше.У меня есть код ниже в функции viewDidLoad на главном ViewController.
Это тестовый проект, с которым я играю, чтобы добавить новые функциональные возможности в мое существующее приложение, как только оно заработало.
Iпопытался добавить UIView в MainStoryBoard проекта и добавить ссылку на него в файл ViewController.swift (перетаскивание элемента управления), чтобы создать выход, а затем добавить shapeLayer и trackLayer в UIView.
Код ниже
@IBOutlet weak var gaugeView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
let centre = view.center
let circularPath = UIBezierPath(arcCenter: centre, radius: 100, startAngle: -CGFloat.pi / 2, endAngle: 2 * CGFloat.pi, clockwise: true)
// Track Layer Under Gauge
trackLayer.path = circularPath.cgPath
trackLayer.strokeColor = UIColor.lightGray.cgColor
trackLayer.lineWidth = 10
trackLayer.fillColor = UIColor.clear.cgColor
//view.layer.addSublayer(trackLayer)
gaugeView.layer.addSublayer(trackLayer)
// Animated Circular Guage
shapeLayer.path = circularPath.cgPath
shapeLayer.strokeColor = UIColor.green.cgColor
shapeLayer.lineWidth = 10
shapeLayer.lineCap = .round
shapeLayer.fillColor = UIColor.clear.cgColor
shapeLayer.strokeEnd = 0
//view.layer.addSublayer(shapeLayer)
gaugeView.layer.addSublayer(shapeLayer)
}
Как только у меня есть приложение в симуляторе, оно рисует и анимирует круг, когда view.layer.addSubLayer не закомментирован, но не добавит его в контейнер UIView с помощью gaugeView.layer.addSubView находится там.