【问题标题】:Is there a way to change the color of a UINavigationBar based on the color of content displayed有没有办法根据显示的内容的颜色来改变 UINavigationBar 的颜色
【发布时间】:2017-11-05 19:36:53
【问题描述】:

所以我正在开发一个自定义音乐播放器应用。我需要能够根据视图中显示的内容动态更改导航栏的颜色。我四处搜寻,如果可能的话,似乎找不到办法。我知道如何将颜色更改为基本上任何颜色,但不会根据 UIImage 的颜色进行更改。这是我的设计师想出的。

我还需要以基本相同的方式更改同一表格视图单元格中和导航栏上按钮的颜色。这是我已经在故事板中的内容。

我还需要能够更改标签栏及其项目的颜色。我不知道这是否可能。有人可以对此有所了解,或者指出我正确的方向

【问题讨论】:

  • 对于导航栏颜色,获取图像视图中最顶部像素的颜色并将其设置为背景颜色,对于标签栏执行相同操作(取最近的图像像素颜色并设置它) .您还可以通过聚合 rgb 值并从聚合的 rgb 值派生新颜色来使颜色更平滑(类似于图像)。除了这个,我没有太多想法。使用此链接获取图像的像素颜色:stackoverflow.com/questions/21028952/…
  • 那么我可以说在图像上声明一个 CGPoint 并获取该点的像素颜色,然后将颜色设置为 CGPoint 处的颜色,然后当图像发生变化时颜色会发生变化?
  • 是的,试一试。 (在考虑其他答案时)
  • 嘿,感谢您的回复它就像一个魅力,不得不放弃 tabBarController 因为它返回 nil 但我将使用带有 containerViews 的工具栏,它应该看起来都一样
  • 欢迎您。 :)

标签: ios colors swift3 uinavigationbar uitabbar


【解决方案1】:

实现这种设计最简单的方法是让导航栏完全transparent,并将全屏图像顶部约束与视图一起设置为0。然后图像将从屏幕顶部显示。然后按照设计给导航栏一个阴影图像。但是对于标签栏,我相信您可能需要从 imageview 中 pick the color 并更改标签栏的背景。

【讨论】:

  • 问题在于它是一个tableView,当用户向上滚动时,颜色会改变,这不是我们想要的设计。我已经调查过了。
  • 好的,那么您可能必须从 imageview 中选择颜色并相应地更改背景颜色。但我相信您可能必须从后台线程中选择颜色并从主线程中更新颜色
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-10
  • 2015-02-16
  • 1970-01-01
相关资源
最近更新 更多