Вы можете добавить пользовательский вид в виде наложения поверх своего вида камеры, чтобы нарисовать сетку с помощью QuartzCore.
Вот как я сделал это в моем приложении Subvision:

код я использую, чтобы сделать это (примечание: моя решетка регулируется, так что это может быть 10х10, 2х2 и т.д.):
// -------------------------------------------------------------------------------
// 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:
#import <UIKit/UIKit.h>
@interface GridView : UIView
@property (nonatomic, assign) int numberOfColumns;
@property (nonatomic, assign) int numberOfRows;
@end
Это означает, что я могу изменить эти два значения и иметь бесконечно регулируемые деления сетки.
Потрясающие спасибо, вот что я искал – sin
Как бы я добавить, что оверлей? Если я подклассифицирую UIView в класс GridView, а затем попробую это, drawRect никогда не будет вызван. GridView * gridView = [[GridView alloc] init]; gridView.numberOfColumns = 10; gridView.numberOfRows = 10; [камераUI комплектCameraOverlayView: gridView]; –
Вам необходимо вызвать [gridView setNeedsDisplay]; каждый раз, когда вы меняете числоOfRows или numberOfCols. Это вызовет метод drawRect: метод gridView. – Zhang