Sen gerçekten QuartzCore kullanarak ızgara çizmek için kamera görüntüsü üzerinde bir bindirme olarak özel bir görünüm ekleyebilirsiniz.
O benim app Subvision yaptım nasıl:
bunu çizmek için kullanın kodu (not: benim ızgara ayarlanabilir yüzden 10x10 kalabilir, 2x2 vb):
:
benim GridView sınıfta
// -------------------------------------------------------------------------------
// 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);
}
}
, ben 2 özellikler numberOfRows ve numberOfColumns tanımladık
Böyle yapmak, bu iki değeri değiştirebilir ve sınırsız ayarlanabilir ızgara bölümlerine sahip olabilirim anlamına gelir.
Müthiş teşekkürler çıkarabiliriz? UIView'i GridView adında bir sınıfa alt sınıflara ayırırsam ve bunu denerseniz, drawRect hiçbir zaman aranmaz. GridView * gridView = [[GridView ayırma] init]; gridView.numberOfColumns = 10; gridView.numberOfRows = 10; [cameraUI setCameraOverlayView: gridView]; – sin
aradığı şeyi thats .. ihtiyaçlarınızı göre .. CoreGraphics VEYA QuartZCore hem –
[gridView setNeedsDisplay] öğesini çağırmanız gerekir; numberOfRows veya numberOfCols değerini her değiştirdiğinizde. Bu drawRect: gridView yöntemini çağırır. – Zhang