これについては、SOの質問だけでなく、たくさんの考えがあるようです。ただし、特定のコードが機能すると言う人もいます。例えば:
[self.layer setShadowOffset:CGSizeMake(1, 3)];
[self.layer setShadowOpacity:0.9];
[self.layer setShadowRadius:3.0f];
[self.layer setShouldRasterize:YES];
[self.layer setCornerRadius:12.0f];
[self.layer setShadowPath:[[UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:12.0f] CGPath]];
12.0fのコーナー半径とシャドウの両方を適用する必要があります。しかし、それは機能しません。このコードを使用すると、影が表示されますが、コーナーの半径は表示されません。
私の知る限り、これはclipsToBoundsをYESに設定する必要があるためです。しかし、これは順番に影を打ち消します。
私は何か間違ったことをしていますか、それとも上記のコードは機能しませんか?
また、これを乗り越える良い方法は、別のシャドウレイヤーを作成してから追加することだと言われています。
しかし、UIViewのdrawRectでこれをどのように行うのでしょうか?-サンプルコードは素晴らしいでしょう!
ありがとう!