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! –
İlgili konular
- 1. SVG poligonları üzerinde gezinirken gösterilmeyen araç ipuçları
- 2. Bir UIImageView IOS biçiminde çizim Çizim
- 3. Çizim Fare çizim yaparken titreklik yapma Java
- 4. Bir resimden URL'ye tuval çizim Çizim
- 5. Çizim VBO
- 6. Çizim Shader
- 7. Çizim oklar
- 8. Çizim uygulaması - çizim geçersiz, Mic uygulamasında bir uygulama yapıyorum
- 9. iPhone için çekirdek çizim kullanarak, x ekseninde çizim tarihi
- 10. Çizim C/C++ yapıları, işaretçiler, vb için hızlı çizim araçları
- 11. Qt/C++: verimli çizim
- 12. Çizim Uygulaması Zoom Konsept
- 13. JavaScript çizim veritabanı şeması
- 14. Çizim Izgarası/Tabloda HTML5
- 15. matplotlib: vektörel çizim oluşturma
- 16. Kaynak oluşturulabilir Çizim
- 17. Çizim DrawingVisual on Canvas
- 18. Koşullu Çizim (ggplot kullanamazsınız)
- 19. çizim svg in angluarJS
- 20. Android çizim yolu
- 21. Python - yeniden çizim fonksiyonları
- 22. Açıdaki Çizim Metni
- 23. Çizim UML durum diyagramları
- 24. Çizim üçgen/CGContext
- 25. Haskell grafik çizim Windows'ta
- 26. Çizim Dikdörtgeni Qt
- 27. Javascript, tringle çizim, tuval
- 28. ctx.fillText bağlantıda çizim yapmıyor
- 29. C++ ile Bitmap Çizim +
- 30. İkinci alt çizim kayboluyor
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