2

Path や Facebook のようなスライド メニューを作成し、メニューと UINavigationController の間にすべてのコンテンツを含む影を作成したいと考えています。レイヤーに丸みを帯びた角を追加できますが、レイヤーに適用した影が表示されません。そのコードの何が問題になっていますか? UINavigationController の代わりに UIViewController を使用すると機能します... (コードは rootViewController として UINavigationController に追加されたビュー内にあります)

問題は、 UINavigationController の丸みを帯びた境界線を緩めたくないことです

self.navigationController.view.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:self.navigationController.view.bounds cornerRadius:self.navigationController.view.layer.cornerRadius].CGPath;
[self.navigationController.view.layer setMasksToBounds:YES];
[self.navigationController.view.layer setShadowColor:[UIColor blackColor].CGColor];
[self.navigationController.view.layer setShadowOffset:CGSizeMake(0, 0)];
[self.navigationController.view.layer setShadowOpacity:0.5];
[self.navigationController.view.layer setShadowRadius:3];
[self.navigationController.view.layer setCornerRadius:3];
4

4 に答える 4

2

問題は

[self.navigationController.view.layer setMasksToBounds:YES];

名前が示すように、影を含むレイヤーの外側のすべてがマスクされます。

于 2013-02-23T17:00:19.963 に答える
0

このように設定setMasksToBoundsNOます

[self.navigationController.view.layer setMasksToBounds:NO];

コーナーを失うことなく影を追加できます。コードでこれを試してください

[self.navigationController.view setShouldRasterize:YES];

いくつかのshadowOffsetを設定して試してください

setShadowOffset:CGSizeMake(0, 5)
于 2013-02-23T17:00:13.740 に答える