Я добавляю наложение, используя представление pickerController и uinavigationcontrollerdelegate, как показано ниже.Обрезка изображения в форме наложения - iOS
-(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];
}
}
Когда наложение определено выше добавляется, я, как правило, чтобы получить эту точку зрения:
Я могу обрезать изображение точно в квадрат, используя определенную CGRect.
CGImageRef imageRef = CGImageCreateWithImageInRect([imageToCrop CGImage], rect);
UIImage *cropped = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
Как насчет того, чтобы подойти к этой проблеме, когда есть свойство кругового наложения и изображения? Я могу увеличить масштаб и уменьшить масштаб изображения. Как я могу использовать BezierPath здесь?
Какова цель? Вы не можете получить круговое изображение, поэтому просто хотите стереть изображение под наложением до белого? И как масштабирование связано с наложением? Вы уже справляетесь с масштабированием самостоятельно? – Wain
UIImage находится поверх прокрутки с масштабируемым значением 2.0. Когда изображение будет увеличено и, как ожидается, обрезается, увеличенное изображение в этом оверлейном разрезе должно быть обрезано. – DesperateLearner
Yup очень сложно получить зум справа. Я дал вам весь код, который вам нужен ниже! – Fattie