2013-08-14 9 views

cevap

23

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:

enter image description here

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.

+0

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

+0

aradığı şeyi thats .. ihtiyaçlarınızı göre .. CoreGraphics VEYA QuartZCore hem –

+0

[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

1

cameraOverlayView için kullanılacak bir UIImageView oluşturun.

UIImagePickerController'ı ve bir resmi 'ızgara çizgileriniz' olarak kullanın. Izgara çizgi görüntü dosyanızı yaparken, şeffaf bir arka plan kullandığınızdan emin olun - opak beyaz değil.

UIImageView *overlayImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"overlay.png"]]; 

CGRect overlayRect = CGRectMake(0, 0, overlayImage.image.size.width, overlayImage.image.size.height); 

[overlayImage setFrame:overlayRect]; 

[yourImagePickerController setCameraOverlayView:overlayImage]; 
+0

Ben ImagePickerViewController – sin

+0

kullanmıyorum Sonra nasıl bindirme eklemek olacağını ben –