Ios 如何从导航栏中删除阴影线?
我以编程方式将Ios 如何从导航栏中删除阴影线?,ios,uinavigationcontroller,uinavigationbar,Ios,Uinavigationcontroller,Uinavigationbar,我以编程方式将UINavigationController添加到我的UIViewController中,如下所示: UINavigationController * nc = [[UINavigationController alloc] initWithRootViewController:[ViewController fromStoryboardNamed:@"myVC"]]; 在debug视图层次结构中,我看到在带有灰色背景的UINavigationBar后面有一个名为UIBackd
UINavigationController
添加到我的UIViewController
中,如下所示:
UINavigationController * nc = [[UINavigationController alloc] initWithRootViewController:[ViewController fromStoryboardNamed:@"myVC"]];
在debug视图层次结构中,我看到在带有灰色背景的UINavigationBar
后面有一个名为UIBackdropView
的视图。您可以在屏幕截图中看到:
我试图在文档中找到它,但找不到
我们能进入这个层吗
这会导致UINavigationBar
下出现一条1像素的灰线。是否可以删除/隐藏\u ui backdropview
我试图通过在覆盖这条暗线的
UINavigationBar
下添加一个简单的带有白色背景色的UIView
来混合这条1像素线,效果很好。我想知道是否有办法隐藏/删除BackdropView
,而不是在其上添加UIView
。这是Apple私有API。您可以尝试使用SuperView或使用valueForKey
访问它。但是,我不建议使用它。首先,苹果可能会拒绝你的申请。此外,所有Apple构建视图的结构可能随时发生变化,您的应用程序可能会面临问题。有关\u ui backdropview的更多信息,您可以找到
删除一个像素下划线的最简单、最快速的解决方案是:
[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
然而,它将消除模糊,什么可能不是你想要的。您可以使用轻松删除发际线而不影响模糊效果 这是苹果的私有API。您可以尝试使用SuperView或使用
valueForKey
访问它。但是,我不建议使用它。首先,苹果可能会拒绝你的申请。此外,所有Apple构建视图的结构可能随时发生变化,您的应用程序可能会面临问题。有关\u ui backdropview的更多信息,您可以找到
删除一个像素下划线的最简单、最快速的解决方案是:
[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
然而,它将消除模糊,什么可能不是你想要的。您可以使用轻松删除发际线而不影响模糊效果 官方说法,这只能通过将导航栏的
阴影图像设置为空图像来实现,如另一个答案中所述。然而,仔细看一下文件,据说:
要显示自定义阴影图像,还必须使用setBackgroundImage:forBarMetrics:方法设置自定义背景图像。如果使用默认背景图像,则无论此属性的值如何,都将使用默认阴影图像
通过使用自定义背景图像,您将失去模糊的背景半透明性,这可能不是您想要的
“发际线”是一个UIImageView,它是导航栏的子视图。您可以找到它并将其设置为隐藏。例如,这就是苹果在其原生日历应用程序中所做的。只需迭代子视图,并将图像视图设置为隐藏。正式来说,这只能通过将导航栏的阴影图像设置为空图像来实现,如另一个答案中所述。然而,仔细看一下文件,据说:
要显示自定义阴影图像,还必须使用setBackgroundImage:forBarMetrics:方法设置自定义背景图像。如果使用默认背景图像,则无论此属性的值如何,都将使用默认阴影图像
通过使用自定义背景图像,您将失去模糊的背景半透明性,这可能不是您想要的
“发际线”是一个UIImageView,它是导航栏的子视图。您可以找到它并将其设置为隐藏。例如,这就是苹果在其原生日历应用程序中所做的。只需迭代子视图,并将图像视图设置为隐藏。实际上,我想删除视图,因为它在导航栏下添加了1个像素线,您可以看到如何隐藏它,这是我答案的一部分,还添加了对已提出此问题的stackoverflow线程的引用。@T_77阴影图像是另一个视图。@gontovnik Blur在您的解决方案中被禁用。是它在导航栏@LeoNatan下创建了1像素线吗?如何删除它?实际上我想删除视图,因为它在导航栏下添加了1个像素线,你可以看到如何隐藏它,这是我答案的一部分,还添加了对已提出此问题的stackoverflow线程的引用。@T_77阴影图像是另一个视图。@gontovnik Blur在您的解决方案中被禁用。是它在导航栏@LeoNatan下创建了1像素线吗?如何删除它?