Kullanıcı, üzerine dokunduğunda düzensiz bir şekli vurgulamalıyım. Nasıl yapılacağına dair fikrim, şekle uyan, onu bir renkle dolduran ve saydamlığını değiştirmek için opaklığı değiştiren çokgen çizmekti. Ne yazık ki bunun nasıl yapılacağı hakkında bir şey bulamıyorum. Esasen, doldurulmuş çokgen çizmek, haritanın üzerine yerleştirmek ve sonra onu reddedebilmek (veya gizleyebilmek) istiyorum. Bunu nasıl başarabilirim?Swift'de Çizim Poligonları
9
A
cevap
27
Büyük olasılıkla bir CAShapeLayer
kullanmak istersiniz. İşte bir demo:
import XCPlayground
import UIKit
import CoreText
let view = UIView(frame: CGRectMake(0, 0, 300, 300))
XCPShowView("view", view)
let imageView = UIImageView(image: UIImage(named: "profile.jpg"))
imageView.frame = view.bounds
imageView.contentMode = UIViewContentMode.ScaleAspectFill
view.addSubview(imageView)
let shape = CAShapeLayer()
view.layer.addSublayer(shape)
shape.opacity = 0.5
shape.lineWidth = 2
shape.lineJoin = kCALineJoinMiter
shape.strokeColor = UIColor(hue: 0.786, saturation: 0.79, brightness: 0.53, alpha: 1.0).CGColor
shape.fillColor = UIColor(hue: 0.786, saturation: 0.15, brightness: 0.89, alpha: 1.0).CGColor
let path = UIBezierPath()
path.moveToPoint(CGPointMake(120, 20))
path.addLineToPoint(CGPointMake(230, 90))
path.addLineToPoint(CGPointMake(240, 250))
path.addLineToPoint(CGPointMake(40, 280))
path.addLineToPoint(CGPointMake(100, 150))
path.closePath()
shape.path = path.CGPath
Sonuç: 3
Swift:
let shape = CAShapeLayer()
cell.layer.addSublayer(shape)
shape.opacity = 0.5
shape.lineWidth = 2
shape.lineJoin = kCALineJoinMiter
shape.strokeColor = UIColor(hue: 0.786, saturation: 0.79, brightness: 0.53, alpha: 1.0).cgColor
shape.fillColor = UIColor(hue: 0.786, saturation: 0.15, brightness: 0.89, alpha: 1.0).cgColor
let path = UIBezierPath()
path.move(to: CGPoint(x: 120, y: 20))
path.addLine(to: CGPoint(x: 230, y: 90))
path.addLine(to: CGPoint(x: 240, y: 250))
path.addLine(to: CGPoint(x: 100, y: 150))
path.close()
shape.path = path.cgPath
+0
Mükemmel! Tam olarak aradığım şey! Teşekkürler! –
Sen ondan bir fikir sahibi olabilirim Amaç C ile yazılmış bu mac app bakın. – Sandeep
Şeklini drawRect'te çizebilirsin: (UIBezierPath kullanarak) veya bir görünüm oluşturup görünüm katmanına eklediğiniz bir CAShapeLayer'a bir bezier yolu ekleyin. – rdelmar