Ho una vista semplice (lato sinistro dell'immagine) e ho bisogno di creare una sorta di sovrapposizione (lato destro dell'immagine) a questa vista. Questa sovrapposizione dovrebbe avere un po 'di opacità, quindi la vista sotto è ancora parzialmente visibile. Soprattutto, questa sovrapposizione dovrebbe avere un foro circolare al centro in modo che non si sovrapponga al centro della vista (vedi immagine sotto).
Posso facilmente creare un cerchio come questo:
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;
E una sovrapposizione rettangolare "completa" come questa:
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];
Ma non ho idea di come posso combinare questi due strati in modo che creino l'effetto che desidero. Chiunque? Ho provato davvero di tutto ... Grazie mille per l'aiuto!
moveToPoint
, quindi aggiungi il rettangolo arrotondato. Controlla i documenti per i metodi offerti da UIBezierPath
.