Я искал с помощью BezierPath и заметил то, что я не могу понять. Это код-Рисунок bezierPath
UIBezierPath *path = [UIBezierPath new];
CGSize screenDimensions = CGSizeMake([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);
CGPoint firstPoint = CGPointMake(screenDimensions.width/2, screenDimensions.height/2);
CGPoint secondPoint = CGPointMake(screenDimensions.width/2 + 10, screenDimensions.height/2 + 10);
CGPoint thirdPoint = CGPointMake(screenDimensions.width/2 - 10, screenDimensions.height/2 + 10);
[path moveToPoint:firstPoint];
[path addLineToPoint:secondPoint];
[path addLineToPoint:thirdPoint];
[path addLineToPoint:firstPoint];
[path closePath];
CAShapeLayer *tempLayer = [CAShapeLayer new];
[tempLayer setPath:path.CGPath];
UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(screenDimensions.width/2 - 30, screenDimensions.height/2 - 30, 100, 100)];
// UIView *tempView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
[tempView setBackgroundColor:[UIColor blueColor]];
tempView.layer.mask = tempLayer;
[self.view addSubview:tempView];
Если я запускаю выше блок кода, ничего не рисуется на UIView, который добавляется на экране. Но если бы я прокомментировал текущий «tempView» и раскомментировал выделенное в настоящее время распределение, он отлично рисовал бы на экране. Может ли кто-нибудь указать, что я делаю неправильно здесь, когда устанавливаю фрейм или это что-то еще?
Ahh спасибо! Это решило проблему, я понятия не имел, что CAShapeLayer будет использовать границы своего применения! – Rikh
Было бы ужасно и запутанно, если бы это не так. – rmaddy