Basit bir görünüme sahibim (resmin sol tarafı) ve bu görünüme bir çeşit kaplama (resmin sağ tarafı) oluşturmam gerekiyor. Bu bindirmenin bir miktar opaklığı olması gerekir, bu nedenle alttaki görünüm hala kısmen görülebilir. En önemlisi, bu bindirmenin ortasında dairesel bir delik olmalıdır, böylece görünümün merkezini kaplamaz (aşağıdaki resme bakın).
Kolayca böyle bir çevre oluşturabilirim:
int radius = 20; //whatever
CAShapeLayer *circle = [CAShapeLayer layer];
circle.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0,radius,radius) cornerRadius:radius].CGPath;
circle.position = CGPointMake(CGRectGetMidX(view.frame)-radius,
CGRectGetMidY(view.frame)-radius);
circle.fillColor = [UIColor clearColor].CGColor;
Ve bunun gibi "tam" bir dikdörtgen kaplama:
CAShapeLayer *shadow = [CAShapeLayer layer];
shadow.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, view.bounds.size.width, view.bounds.size.height) cornerRadius:0].CGPath;
shadow.position = CGPointMake(0, 0);
shadow.fillColor = [UIColor grayColor].CGColor;
shadow.lineWidth = 0;
shadow.opacity = 0.5;
[view.layer addSublayer:shadow];
Ama bu iki katmanı nasıl birleştirebileceğimi bilmiyorum ki istediğim efekti yaratsınlar. Kimse? Gerçekten her şeyi denedim ... Yardım için çok teşekkürler!
moveToPoint
, ardından yuvarlatılmış rektifini ekleyin. Tarafından sunulan yöntemler için belgeleri kontrol edin UIBezierPath
.