вы можете видеть в моем коде, что то, что я рисую, рисует только прямую линию. Я хочу иметь больше контроля над тем, что я рисую. Я не могу нарисовать кривую. Я думаю, что случайно удалил что-то в моем кокде, чтобы вызвать это. Я не знаю, что это такое. Я могу нарисовать небольшую кривую, но она не обладает той гибкостью, которую я ищу.
class reViewController: UIViewController {
var myLayer = CALayer()
var path = UIBezierPath()
var startPoint = CGPoint()
var touchPoint = CGPoint()
var drawPlace = UIImageView()//The imageview
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first
if let point = touch?.location(in: drawPlace){
startPoint = point
}
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first
if let point = touch?.location(in: drawPlace){
touchPoint = point
}
path.move(to: startPoint)
path.addLine(to: touchPoint)
startPoint = touchPoint
draw()
}
func draw() {
let context = UIGraphicsGetCurrentContext()
context?.setLineWidth(10)
context?.setLineCap(.square)
context?.beginPath()
context?.strokePath()
drawPlace.clipsToBounds = true
drawPlace.isMultipleTouchEnabled = true
let strokeLayer = CAShapeLayer()
strokeLayer.fillColor = nil
strokeLayer.lineWidth = 0.5
strokeLayer.strokeColor = UIColor.blue.cgColor
strokeLayer.path = path.cgPath
drawPlace.layer.insertSublayer(strokeLayer, below: myLayer)
drawPlace.setNeedsDisplay()
let star:UIImage = UIImage(named: "e.png")!
let newSize = CGSize(width: star.size.width, height: star.size.height )
UIGraphicsBeginImageContextWithOptions(newSize, false, star.scale)
star.draw(in: CGRect(x: newSize.width/12,
y: newSize.height/8,
width: newSize.width/1.2,
height: newSize.height/1.2),
blendMode:CGBlendMode.normal, alpha:1)
let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
drawPlace.image = newImage
}
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.brown
drawPlace.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(drawPlace)
draw()
drawPlace.backgroundColor = UIColor.orange
NSLayoutConstraint.activate ([
drawPlace.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :150),
drawPlace.topAnchor.constraint(equalTo: view.centerYAnchor, constant : -100),
drawPlace.widthAnchor.constraint(equalToConstant: 300),
drawPlace.heightAnchor.constraint(equalToConstant: 300),
])
}}