2014-11-07 9 views
9

में ड्राइंग पॉलीगॉन जब उपयोगकर्ता उस पर टैप करता है तो मुझे अनियमित आकार को हाइलाइट करने की आवश्यकता होती है। ऐसा करने के बारे में मेरा विचार था कि एक बहुभुज को आकर्षित करना जो आकार से मेल खाता है, इसे रंग से भरें और अस्पष्टता को पारदर्शी बनाने के लिए बदलें। दुर्भाग्य से मुझे यह कैसे करना है इस पर कुछ भी नहीं मिला। अनिवार्य रूप से, मैं भरे बहुभुज को आकर्षित करना चाहता हूं, इसे अपने मानचित्र पर ओवरले करें और फिर इसे खारिज कर दें (या छुपाएं)। मैं यह कैसे हासिल कर सकता हूं?स्विफ्ट

+0

आप इसे से एक विचार प्राप्त कर सकते हैं उद्देश्य सी में लिखा यह मैक एप्लिकेशन देखें। – Sandeep

+0

आप या तो drawRect में आकार खींच सकते हैं: (UIBezierPath का उपयोग करके), या एक दृश्य बनाएं और एक कैशपलेयर को एक बेजियर पथ जोड़ें जिसे आप दृश्य की परत में जोड़ते हैं। – rdelmar

उत्तर

27

शायद आप CAShapeLayer का उपयोग करना चाहते हैं। यहाँ एक डेमो है:

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 

परिणाम:

demo

स्विफ्ट 3:

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

बिल्कुल सही! ठीक वही जो मेरे द्वारा खोजा जा रहा था! धन्यवाद! –