当栏位置为 UIBarPositionTopAttached 时,UIToolbar 阴影不会隐藏
Posted
技术标签:
【中文标题】当栏位置为 UIBarPositionTopAttached 时,UIToolbar 阴影不会隐藏【英文标题】:UIToolbar shadow doesn´t hide when bar position is UIBarPositionTopAttached 【发布时间】:2015-04-15 21:39:26 【问题描述】:我有一个包含两个视图和一个工具栏的容器视图。在ContainerViewController
中,我使用此代码(来自 Apple 的库)“停用”了导航栏的阴影:
[self.navigationController.navigationBar setShadowImage:[UIImage imageNamed:@"TransparentPixel"]];
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"Pixel"] forBarMetrics:UIBarMetricsDefault];
我还实现了UIToolbarDelegate
及其方法
- (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar
return UIBarPositionTop; //or return UIBarPositionTopAttached;
但工具栏的阴影仍然在导航栏和工具栏之间,而不是在工具栏下方,以将工具栏与内容分开。
任何想法为什么阴影不会改变?或者如何检查工具栏位置是否真的是TopAttached。
编辑:
我尝试做类似这篇文章中描述的事情:UISegmentedControl below UINavigationbar in ios 7 没有搜索栏。
正如那里所解释的,有两个阴影,一个是导航控制器中的导航栏,位于导航栏和工具栏之间。和工具栏的阴影。
如前所述,我能够停用导航栏的阴影。它也适用于viewDidLoad:
但是工具栏的阴影位置不对。使用positionForBar:
方法,它应该位于工具栏的按钮中,但它仍位于顶部(在导航栏和工具栏之间)。
所以我正在寻找故障,为什么它没有改变。
【问题讨论】:
你想用什么方法改变阴影? 【参考方案1】:您没有指定您尝试更改阴影的方法,但我猜您正在尝试在 viewDidLoad:
中执行此操作
viewDidLoad
中实际上并不存在您的navigationBar
,而是像这样更改viewWillAppear:
中的阴影:
-(void) viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
[self.navigationController.navigationBar setShadowImage:[UIImage imageNamed:@"TransparentPixel"]];
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"Pixel"] forBarMetrics:UIBarMetricsDefault];
【讨论】:
以上是关于当栏位置为 UIBarPositionTopAttached 时,UIToolbar 阴影不会隐藏的主要内容,如果未能解决你的问题,请参考以下文章