Saya memiliki tampilan sederhana (sisi kiri gambar) dan saya perlu membuat semacam overlay (sisi kanan gambar) untuk tampilan ini. Hamparan ini harus memiliki beberapa opasitas, jadi tampilan di bawahnya masih terlihat sebagian. Yang terpenting overlay ini harus memiliki lubang melingkar di tengahnya sehingga tidak menutupi bagian tengah tampilan (lihat gambar di bawah).
Saya dapat dengan mudah membuat lingkaran seperti ini:
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;
Dan hamparan persegi panjang "penuh" seperti ini:
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];
Tetapi saya tidak tahu bagaimana saya bisa menggabungkan dua lapisan ini sehingga mereka menciptakan efek yang saya inginkan. Siapa saja? Aku sudah mencoba segalanya ... Terima kasih banyak atas bantuannya!
moveToPoint
, lalu tambahkan persegi bulat. Periksa dokumen untuk metode yang ditawarkan oleh UIBezierPath
.