问题标签 [uinavigationbarappearance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
434 浏览

ios - iOS 15 导航栏透明问题

在 iOS 15 中为 NavigationBar 尝试 Transperent,

它在低于 iOS 15 的版本中工作。

如何使导航栏透明 iOS 15。 在此处输入图像描述

0 投票
1 回答
248 浏览

swift - iOS 15 中的状态栏样式不变

我想根据屏幕内容更改状态栏样式。对于较暗的屏幕,状态栏内容应为白色。对于较轻的屏幕,状态栏内容应为黑色。

似乎该问题仅发生在 iOS 15 设备中。

下面的屏幕截图比较了 iOS 15.2 和 iOS 14.5 上的相同用例

在此处输入图像描述

如您所见,即使导航栏样式设置为“黑色”,状态栏样式也是默认的

状态栏样式变化对比

0 投票
2 回答
66 浏览

ios - UITableView 内容卡在 UINavigationBar 下,可能是 scrollEdgeAppearance 引起的?

在过去的十年中,我制作了数百个表视图控制器,但我不知道为什么会这样。my 的内容UITableView卡在 my 中的 my UINavigationBar(带有背景颜色)下UINavigationController。我在现有项目中遇到了这个问题,但为了找出问题,我创建了一个全新的项目,其中没有任何其他内容。

  • 我创建了一个项目。
  • 创建了仅添加一些示例部分/行的 TestTableViewController 类。
  • 从情节提要中删除了初始视图控制器。
  • 添加了一个 UITableViewController 并将其类类型设置为 TestTableViewController。
  • 将 UITableView 的背景颜色设置为 UIColor.systemGroupedBackgroundColor。
  • 将 UITableViewCell 更改为 Basic 类型,并将其单元重用 id 设置为“Cell”。
  • 告诉故事板将 TestTableViewController 嵌入 UINavigationController。
  • 将该 UINavigationController 设置为初始视图控制器。

当我启动应用程序时,导航栏被隐藏(我相信是由于scrollEdgeAppearance),当我开始从顶部边缘滚动时,导航栏开始显示。

但我需要导航栏上的背景颜色,所以:

  • 在情节提要中,我将 UINavigationController 的导航栏更改为背景色。

现在 UITableView 内容卡在导航栏下。

我尝试在我的应用程序委托中配置 UINavBar 的外观:

但这并没有改变什么。下一个:

  • 我尝试创建一个UINavigationController被调用的子类TestNavController
  • 更新了故事板以将导航上的类设置为TestNavController
  • 向导航栏添加代码-awakeFromNib并显式设置样式:-viewDidLoad

内容仍然停留在导航栏下。接下来,我尝试将故事板排除在等式之外,SceneDelegate.m然后-scene:willConnectToSession:options将故事板创建的根视图控制器替换为完全基于代码的根视图控制器:

它完全按预期工作!那么,为什么我的故事板配置的视图控制器和代码库外观设置显示错误,而基于代码的视图控制器看起来像预期的那样?我一直在不同的位置使用不同的颜色,以便我可以分辨出哪个代码具有效果。在 App Delegate 中设置红色,在 NavigationItem 上的 TestTableViewController 的 awakeFromNib 中设置蓝色。

故事板版本和代码版本的并排屏幕截图

我认为这是 scrollEdgeAppearance 的问题,但我尝试通过代码设置它,但似乎没有任何效果。

当我使用故事板时,为什么我的内容卡在导航栏下?我错过了什么?

这是下载项目的链接: https ://inadaydevelopment.com/stackoverflow/wtf.zip

0 投票
1 回答
21 浏览

ios - 在 iOS >= 15 上使状态栏不透明

因此,从 iOS 15 开始,它更新了导航栏的外观。如果它后面没有内容(例如,我们没有向上滚动),它将是透明的。现在这也会影响状态栏。

当我隐藏导航栏时,状态栏保持透明。如果我这样做(应用程序委托):

这仅在我的导航栏未隐藏时才有效。否则,如果我在视图控制器中执行以下操作:

我的状态栏保持透明。

这不是什么大不了的。我将只使用安全区域,并设置视图控制器视图的背景颜色,它看起来就像状态栏实际上有颜色一样。但它仍然是透明的。即使我做了 navigationBarAppearance.configureWithOpaqueBackground()

我是否遗漏了什么,当导航控制器隐藏(不可见)时,它不可能使状态栏不透明(和彩色)iOS >= 15

0 投票
0 回答
14 浏览

swiftui - SwiftUI 技术动态更新 UINavigationBarAppearance.backgroundImage?

我正在使用标准为 SwiftUI 中的顶部导航栏实现渐变背景NavigationView。对于渐变,我使用 aUIGraphicsImageRenderer创建渐变图像,然后将其分配给backgroundImageof UINavigationBarAppearance。到目前为止,在绘制渐变并将其呈现在顶栏上时,一切都正常。

坡度 在此处输入图像描述

但是,我还不能backgroundImage根据视图动态地进行更改。如果您将其粘贴到操场上,下面的完整代码应该可以工作。

现在.navBarGradient()视图修饰符似乎是“最后一个获胜”,考虑到视图系统在 SwiftUI 中的工作方式,这是有道理的。所以我想了解的是 - 动态更新外观的“SwiftUI 方式”是什么?

通过调整这样的解决方案,我已经能够在顶部栏中实现渐变背景;它完全按照需要工作。但似乎能够为服务器端图像等动态更新顶栏背景图像将是一件有用的事情。

提前致谢!