I have one problem. I look for the answers on the net and I don't understand why is not working. I must do some stupid mistake which I can't figure it out.
if I make :
- (void)viewDidLoad
{
[super viewDidLoad];
UIView * view = [[UIView alloc]initWithFrame:CGRectMake(10, 10, 300, 400)];
view.backgroundColor = [UIColor blueColor];
[self.view addSubview:view];
}
it create blue view on the screen, but if I make
- (void)viewDidLoad
{
[super viewDidLoad];
UIView * view = [[UIView alloc]initWithFrame:CGRectMake(10, 10, 300, 400)];
view.backgroundColor = [UIColor blueColor];
[self.view addSubview:view];
CAShapeLayer * layer = [[CAShapeLayer alloc]init];
layer.frame = CGRectMake(10, 10, 30, 30);
layer.fillColor = [[UIColor blackColor] CGColor];
view.layer.mask = layer;
}
it don't show anything.
If I understand correctly it should mask at (10,10,30,30)?
Thanks for the answer, cncool.
In case someone can't find suitable answer on SO for this question for hours, like i just did, i've assembled a working gist in Swift 2.2 for
masking
/clipping
UIView
withCGRect
/UIBezierPath
:https://gist.github.com/Flar49/7e977e81f1d2827f5fcd5c6c6a3c3d94
Usage:
Hope it will save someone some time in the future :)
You need to set the path on the CAShapeLayer: