2017-01-28 2 views
0

Я использую камеру по умолчанию для ios в своем приложении. Я хотел бы изменить что-то, что отображается после того, как пользователь сделал снимок. Обычно он показывает прямоугольник для обрезки, но мне бы хотелось, чтобы он показал круг, как бы я это сделал.iOS: Как обрезать изображение камеры по умолчанию для круга

+0

возможные дубликаты: https://stackoverflow.com/questions/28365819/ios-custom-uiimagepickercontroller-camera-crop-to -circle-in-preview-view и https://stackoverflow.com/questions/26160854/ios-custom-uiimagepickercontroller-camera-crop-to-circle-square-triangular-shape –

ответ

0

Вот решение, которое могло бы помочь вам создать кадрирования наложения: -

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    if ([navigationController.viewControllers count] == 3) 
    { 
     CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height; 

     UIView *plCropOverlay = [[[viewController.view.subviews objectAtIndex:1]subviews] objectAtIndex:0]; 

     plCropOverlay.hidden = YES; 

     int position = 0; 

     if (screenHeight == 568) 
     { 
      position = 124; 
     } 
     else 
     { 
      position = 80; 
     } 

     CAShapeLayer *circleLayer = [CAShapeLayer layer]; 

     UIBezierPath *path2 = [UIBezierPath bezierPathWithOvalInRect: 
           CGRectMake(0.0f, position, 320.0f, 320.0f)]; 
     [path2 setUsesEvenOddFillRule:YES]; 

     [circleLayer setPath:[path2 CGPath]]; 

     [circleLayer setFillColor:[[UIColor clearColor] CGColor]]; 
     UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 320, screenHeight-72) cornerRadius:0]; 

     [path appendPath:path2]; 
     [path setUsesEvenOddFillRule:YES]; 

     CAShapeLayer *fillLayer = [CAShapeLayer layer]; 
     fillLayer.path = path.CGPath; 
     fillLayer.fillRule = kCAFillRuleEvenOdd; 
     fillLayer.fillColor = [UIColor blackColor].CGColor; 
     fillLayer.opacity = 0.8; 
     [viewController.view.layer addSublayer:fillLayer]; 

     UILabel *moveLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 10, 320, 50)]; 
     [moveLabel setText:@"Move and Scale"]; 
     [moveLabel setTextAlignment:NSTextAlignmentCenter]; 
     [moveLabel setTextColor:[UIColor whiteColor]]; 

     [viewController.view addSubview:moveLabel]; 
    } 
} 
+0

этот код делает камеру по умолчанию круглой, но Я хочу открыть камеру по умолчанию, и после щелчка на картинке я хочу, чтобы обрезка была круглая. –

Смежные вопросы