मैं touchesMoved:
विधि के अनुसार रेखाएं खींच रहा हूं और आमतौर पर यह ठीक काम करता है। लेकिन जब मैं छवि में ज़ूम करता हूं और ड्रॉ करता हूं, तो पहले खींची गई रेखाएं विस्थापित होती हैं और अधिक से अधिक धुंधली होती रहती हैं, अंततः गायब हो जाती हैं। मैंने UIPinchGestureRecognizer
का उपयोग करने की कोशिश की है और frame
myImageView
(केवल मल्टी-टच ईवेंट के लिए) बढ़ाना है लेकिन समस्या दोनों तरीकों से होती है।CGContextStrokePath छवियों को ज़ूम करने और चित्रित करते समय काम नहीं कर रहा है
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
NSArray *allTouches = [touches allObjects];
int count = [allTouches count];
if(count==1){//single touch case for drawing line
UITouch *touch = [touches anyObject];
CGPoint currentPoint = [touch locationInView:myImageView];
UIGraphicsBeginImageContext(myImageView.frame.size);
[drawImage.image drawInRect:CGRectMake(0, 0, myImageView.frame.size.width, myImageView.frame.size.height)];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 2.0);
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
lastPoint = currentPoint;
}
else{//multi touch case
// handle pinch/zoom
}
}
यहाँ छवि ज़ूम किए बिना अधिक तैयार की है:: यहाँ ड्राइंग के लिए कोड है
और इस छवि को जूम करने में लाल तीर के साथ खंड दिखा के बाद समस्या को दर्शाया गया है जो ज़ूमिंग-इन से पहले ही खींचा गया था (जैसा कि पिछली छवि में दिखाया गया है)। छवि दोनों धुंधला और विस्थापित है:
यह भी देखा जा सकता है कि अंत में खींची गई रेखा का एक हिस्सा अप्रभावित है और घटना समय में वापस खींचा लाइनों के लिए होता है। मेरा मानना है कि इसका कारण यह है कि जब मैं ज़ूम इन/आउट करता हूं तो छवि आकार विशेषताओं को खो दिया जा रहा है जो शायद धुंध और शिफ्ट का कारण बनता है, लेकिन मुझे इसके बारे में निश्चित नहीं है!
EDIT - मैंने यह दिखाने के लिए a short video अपलोड किया है। यह मनोरंजक प्रकार है ...
EDIT 2- यहां a sample single-view app समस्या पर ध्यान केंद्रित कर रहा है।
मुझे लगता है कि सामग्री के साथ ऐसा कुछ हो सकता है जिस दृश्य में आप चित्रित कर रहे हैं। UIViewContentModeRedraw आज़माएं? – kevboh
मैंने इसे 'myImageView' और' drawImage' '(दोनों' UIImageView') के लिए सेट करने का प्रयास किया लेकिन यह काम नहीं किया :(... – tipycalFlow
@kevboh मैंने एक वीडियो अपलोड किया है (और उत्तर में जोड़ा गया है) जो हो सकता है आपको समस्या का बेहतर विचार देता है ... – tipycalFlow