मेरा एप्लिकेशन कुछ साधारण आकृति के चित्र को करने में सक्षम है (जब तक मुझे एक और स्थिर कोड नहीं मिलता है, मैं केवल एक आकृति के साथ चिपक रहा हूं) और यह उन्हें फिर से आकार देने में भी सक्षम है।UIView ड्राइंग बेस्ट प्रैक्टिस
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
[self setContextFillColor:context];
[self setContextStrokeColor:context];
[self setLineWidth:context];
CGFloat lineThickness = [self lineWidth] ;
CGFloat halfLineThickess = lineThickness/2.0f;
CGContextAddRect(context, CGRectMake(halfLineThickess,halfLineThickess, rect.size.width - lineThickness, rect.size.height - lineThickness));
CGContextDrawPath(context, kCGPathEOFillStroke);
}
कौन सा मुझे देता है, (100.0f, 100.0f) की एक इनपुट आकार के साथ, इस:
यह आंकड़ा है कोड मैं एक UIView
बनाने के लिए उपयोग निम्नलिखित है एक "कंटेनर" UIView
के अंदर जो बदले में UIScrollView
के अंदर है। इसके साथ मेरी समस्या यह है कि जब मैं अपनी आकृति का आकार बदल रहा हूं और मैं लगभग 1000 * 1000 के आकार तक पहुंचता हूं (मेरा "कंटेनर" 20,000 * 20,000 है), तो मुझे स्मृति चेतावनियां मिलना शुरू हो जाता है और एप्लिकेशन अंत में छोड़ देता है। तो मेरे प्रश्न हैं:
1) क्या मुझे UIView
के लिए अधिकतम आकार डालने पर विचार करना चाहिए?
2) मैं इस तरह की समस्याओं को ट्रैक करने के लिए उपकरणों का उपयोग कैसे कर सकता हूं, और देख सकता हूं कि समस्या कहां आ रही है (या भारी भारोत्तोलन कहाँ किया जा रहा है)।
3) क्या मुझे this जैसे किसी प्रकार की कैशिंग का उपयोग करना चाहिए?
4) UIView
ड्राइंग करते समय विचार करने के लिए कुछ सामान्य सर्वोत्तम प्रथाओं पर विचार करने के लिए हैं?
5) क्या मुझे CALayer
पर विचार करना चाहिए, हालांकि मुझे स्पर्शों को सुनने की ज़रूरत है?
UIView
का पुनः आकार आकार this पर आधारित है।
क्या आपने क्वार्ट्जकोर का उपयोग करने पर विचार किया है और सीमा को आकर्षित करने के लिए बस अपनी दृश्य की परत संपत्ति का उपयोग कर लिया है? – runmad
बात यह है: यह एक साधारण आंकड़ा है। अंत में मेरे पास अधिक जटिल होंगे, और मुझे नहीं लगता कि 'UIView' के गुणों के साथ खेलना पर्याप्त होगा। लेकिन सुझाव के लिए धन्यवाद। – Peres
यदि आपको बड़ी सामग्री (शायद ज़ूम के साथ) खींचने की आवश्यकता है तो आप 'CATiledLayer' http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CATiledLayer_class/Introduction/Introduction.html – Bastian