如何向UINavigationController添加阴影

时间:2013-02-23 16:55:31

标签: iphone objective-c ios6 uinavigationcontroller shadow

我想在路径或Facebook中创建一个幻灯片菜单,我的菜单和UINavigationController之间有一个阴影,里面有所有内容。我可以为图层添加圆角,但不会显示我应用于图层的阴影。这段代码出了什么问题?如果我使用UIViewController而不是UINavigationController ...(代码在作为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 个答案:

答案 0 :(得分:2)

问题是

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

顾名思义,图层外的所有内容 - 包括阴影 - 都会被屏蔽。

答案 1 :(得分:1)

在Swift3中

self.navigationController?.view.layer.shadowOffset = CGSize(width: 0, height: 5)
self.navigationController?.view.layer.masksToBounds = true

答案 2 :(得分:0)

setMasksToBounds设置为NO。就像这样

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

你可以添加阴影而不会丢失角落,尝试使用你的代码

[self.navigationController.view setShouldRasterize:YES];

设置一些shadowOffset&尝试

setShadowOffset:CGSizeMake(0, 5)

答案 3 :(得分:0)

navigationController?.navigationBar.shadowImage = UIImage(named: "shadow")