आप वास्तव में ग्रिड QuartzCore का उपयोग कर आकर्षित करने के लिए अपने कैमरे दृश्य पर ओवरले के रूप में एक कस्टम दृश्य जोड़ सकते हैं।
यही कारण है कि मैं यह कैसे मेरे ऐप Subvision में किया था:
कोड मैं इसे आकर्षित करने के लिए उपयोग करें (ध्यान दें: मेरी ग्रिड समायोज्य है, इसलिए यह 10x10 हो सकता है, 2x2 आदि):
:
// -------------------------------------------------------------------------------
// Used for drawing the grids ontop of the view port
// -------------------------------------------------------------------------------
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 0.5);
CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);
// ---------------------------
// Drawing column lines
// ---------------------------
// calculate column width
CGFloat columnWidth = self.frame.size.width/(self.numberOfColumns + 1.0);
for(int i = 1; i <= self.numberOfColumns; i++)
{
CGPoint startPoint;
CGPoint endPoint;
startPoint.x = columnWidth * i;
startPoint.y = 0.0f;
endPoint.x = startPoint.x;
endPoint.y = self.frame.size.height;
CGContextMoveToPoint(context, startPoint.x, startPoint.y);
CGContextAddLineToPoint(context, endPoint.x, endPoint.y);
CGContextStrokePath(context);
}
// ---------------------------
// Drawing row lines
// ---------------------------
// calclulate row height
CGFloat rowHeight = self.frame.size.height/(self.numberOfRows + 1.0);
for(int j = 1; j <= self.numberOfRows; j++)
{
CGPoint startPoint;
CGPoint endPoint;
startPoint.x = 0.0f;
startPoint.y = rowHeight * j;
endPoint.x = self.frame.size.width;
endPoint.y = startPoint.y;
CGContextMoveToPoint(context, startPoint.x, startPoint.y);
CGContextAddLineToPoint(context, endPoint.x, endPoint.y);
CGContextStrokePath(context);
}
}
मेरे GridView वर्ग में, मैं 2 गुण numberOfRows और numberOfColumns परिभाषित किया है
ऐसा करने का मतलब है कि मैं इन दो मानों को संशोधित कर सकता हूं और असीमित समायोज्य ग्रिड उपखंड हैं।
बहुत बढ़िया धन्यवाद, thats मैं – sin
के लिए क्या देख रहा था मैं ओवरले कैसे जोड़ना होगा कि? यदि मैं ग्रिड व्यू नामक कक्षा में UIView को उप-वर्ग करता हूं और फिर इसे आज़माता हूं, तो drawRect को कभी भी कॉल नहीं किया जाता है। ग्रिड व्यू * ग्रिड व्यू = [[ग्रिड व्यू आवंट] init]; gridView.numberOfColumns = 10; gridView.numberOfRows = 10; [कैमरायूआई सेट कैमरे ओवरव्यू व्यू: ग्रिड व्यू]; –
आपको [gridView setNeedsDisplay] को कॉल करने की आवश्यकता है; प्रत्येक बार जब आप संख्या OfRows या numberOfCols बदलते हैं। यह drawRect को कॉल करेगा: ग्रिड व्यू की विधि। – Zhang