Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从导航栏中删除阴影线?_Ios_Uinavigationcontroller_Uinavigationbar - Fatal编程技术网

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像素线吗?如何删除它?