无法更改搜索栏背景颜色

2023-11-29

我有一个搜索栏:

let searchBar:UISearchBar = UISearchBar(frame: CGRectMake((searchView.frame.width - UIScreen.mainScreen().bounds.width / 1.6) / 2, 0, UIScreen.mainScreen().bounds.width / 1.6, 24))

我想更改文本输入部分的背景颜色。为此我尝试过:

searchBar.barTintColor = UIColor(red: 0/255, green: 74/255, blue: 103/255, alpha: 1)

searchBar.backgroundColor = UIColor.redColor()

但这两种变体都不起作用。如何更改 UISearchBar textInput 部分的背景颜色以及我做错了什么?


就像@aliamcami一样,之前的所有答案都没有像我预期的那样工作,要么答案对我不起作用,要么它有效,但它需要太多“虚拟”代码。所以我分享另一个答案Swift 4简化逻辑:

for textField in searchController.searchBar.subviews.first!.subviews where textField is UITextField {
    textField.subviews.first?.backgroundColor = .white
    textField.subviews.first?.layer.cornerRadius = 10.5 //I set 10.5 because is approximately the system value
    textField.subviews.first?.layer.masksToBounds = true
    //Continue changing more properties...
}

textField.subviews.first是“_UISearchBarSearchFieldBackgroundView”子视图,它在后面添加视觉效果UIFieldEditor.


Edited

经过一些开发和许多错误后,我完成了这个elegant解决方案(我确信苹果不会乐意批准,但我不知道),适用于iOS 10 to iOS 12:

if let textField = searchBar.value(forKey: "searchField") as? UITextField {
    textField.backgroundColor = myColor
    //textField.font = myFont
    //textField.textColor = myTextColor
    //textField.tintColor = myTintColor
    // And so on...
    
    let backgroundView = textField.subviews.first
    if #available(iOS 11.0, *) { // If `searchController` is in `navigationItem`
        backgroundView?.backgroundColor = UIColor.white.withAlphaComponent(0.3) //Or any transparent color that matches with the `navigationBar color`
        backgroundView?.subviews.forEach({ $0.removeFromSuperview() }) // Fixes an UI bug when searchBar appears or hides when scrolling
    }
    backgroundView?.layer.cornerRadius = 10.5
    backgroundView?.layer.masksToBounds = true
    //Continue changing more properties...
}

当。。。的时候searchBar在里面tableHeaderView上面的代码可以在中调用viewWillAppear,但如果它在navigationItem在 iOS 11 及更高版本上,应该调用它viewDidAppear.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法更改搜索栏背景颜色 的相关文章

随机推荐

  • 我可以阻止接口的实现吗?

    我有以下情况 public interface A void doSomethingCool public interface B extends A void doSomethingVeryBCool public interface C
  • 等待用户完成 JavaScript 中 blob 的下载

    在 Javascript 中 我创建了许多 blob 我想提示用户将它们另存为文件 目前 我正在使用URL createObjectURL 将 URL 放入链接中 并模拟对该链接的点击 当然我打电话URL revokeObjectURL释放
  • 从 DWORD 到 64 位指针的类型转换警告

    旧的 32 位 C 应用程序 MS Visual Studio 的代码行如下 m value PUCHAR someDWORD 其中 PUCHAR 是指向无符号字符的指针 现在我已更改为 64 位 并且收到有关从 DWORD 转换为 64
  • RequireJS:为什么相对路径适用于define(),但不适用于require()?

    假设您有以下目录结构和以下文件 root require jquery js folder index html main js AnotherModule js 在 RequireJS 中 当您引用以 开头的模块时 RequireJS 会
  • 是否可以使用 PowerShell 获取 Azure 订阅优惠或 OfferId?

    是否可以使用 Powershell 获取 Azure 订阅优惠或 OfferId 通过门户 这将是订阅 gt 属性 gt 优惠或优惠 ID 我找了好久了 还是没看到 Thanks 现在可以使用资源图形浏览器通过类似于以下的查询从门户完成此操
  • 如何读取本地xml文件作为android中的输入流资源文件夹?

    我正在尝试从类似的东西获取输入流 InputSource myInputSource new InputSource activity getResources openRawResource com MYCLass R xml progr
  • 在邮递员帖子请求中发送地图

    当我希望它使用 RequestBody 注释直接映射到我的 Java pojo 时 我找不到关于如何在 json 帖子中格式化地图的好答案 我假设 json 看起来像这样 myInt 10 myMap 1 A 我的 pojo 会有一个myI
  • JS 代码在 codepen 上运行缓慢,但在本地运行良好

    我已经为无与伦比的井字游戏实现了极小极大算法 极小极大算法是递归的 执行大迭代 这对计算机来说并不大 只对人类来说大 第一步在 codepen 上执行大约需要 3 秒 但在我的本地计算机上立即执行 怎么了 我的代码效率不高吗 或者是code
  • Google Charts LineChart 自定义点

    是否可以添加一个自定义点形状到折线图 谷歌的自定义点文档没有提及任何有关添加他们尚未提供的形状的内容 我确实找到了这个类似的问题有一个很好的答案 但我不认为我可以使用 angular google chart 做到这一点 即使有可能 我也希
  • Javascript 对象 push() 函数

    我有一个 javascript 对象 我实际上通过 ajax 请求获取数据 var data 我在里面添加了一些东西 data 0 ID 1 Status Valid data 1 ID 2 Status Invalid 现在我想删除所有状
  • 将 Excel 转换为 PDF - Java 使用 iText

    我使用 Apache POI 创建了一个 excel 文件 现在我需要将其转换为 PDF 我想使用 iText 但我想将合并的单元格 样式等从 Excel 文件复制到 pdf 我怎样才能实现这个目标 因为我在网上找到的代码示例 使用 iTe
  • ruby、rails gem 安装错误 - 错误:执行 gem 时 ... (Encoding::UndefinedConversionError)

    我尝试使用 ruby 来使用上一个版本 但是当运行 gem install Rails 时 总是出现错误 ERROR While executing gem Encoding UndefinedConversionError U 041D
  • 检查 SQL Azure 中数据库是否存在

    谁能告诉我如何在 sql azure 中编码数据库是否存在 您是否尝试过查询 sys databases 表 这应该会给你你正在寻找的东西 更多信息here 注意 您需要针对 Master 数据库运行此查询 否则 您只会看到当前数据库 和主
  • 如何使用 Loki 的小对象分配器?

    我需要使用 Loki 的小对象分配器 但我对其工作原理感到非常困惑 我已经阅读了文档和很多论坛 但没有意义 其中一些人说使用 stl 其他人则使用自定义分配器 我只需要能够通过分配和取消分配不同大小的对象来测试其性能 有人可以提供一个如何使
  • java方法重载继承与多态

    这是我遇到的一个测试练习问题 非常感谢您帮助我理解这些概念 让 Hawk 成为 Bird 的子类 假设某个类有两个重载方法 void foo Hawk h 和 void foo Bird b 在调用 foo x 之后将执行哪个版本 声明 B
  • 为 GM 创建 JQueryscript - 重写 JS 代码带来的麻烦

    在尝试在没有帮助和有帮助的情况下解决问题之后 我仍然陷入困境 我的目标是用 JS 编写一个 GM 脚本 有人告诉我使用 jQuery 因为它很简单 嗯 我上周开始学习 JS 脑子里塞满了信息 我需要的是提示 开始 开始 任何告诉我如何将脚本
  • 如何选择具有指定条件的不同行

    假设有一张表 a 1 a 2 b 2 c 3 c 4 c 1 d 2 e 5 e 6 如何选择每组所有行的不同最小值 所以这里的预期结果是 a 1 b 2 c 1 d 2 e 5 EDIT 我的实际表包含更多列 我想全部选择它们 这些行仅在
  • 在 Haskell 中提升高阶函数

    我正在尝试构造一个类型的函数 liftSumthing a gt m b gt m b gt a gt t m b gt t m b where t是一个 Monad 转换器 具体来说 我有兴趣这样做 liftSumthingIO Mona
  • 计算文件哈希的最快方法?

    许多文件将存储在数据库中 我需要文件哈希来唯一标识该文件未更改 一般情况下 会用作Windows个人防火墙部分 如果我理解 用作 Windows 个人防火墙 部分正确的话 MD5 作为算法并不是一个好的选择 存在对 MD5 算法的成功攻击
  • 无法更改搜索栏背景颜色

    我有一个搜索栏 let searchBar UISearchBar UISearchBar frame CGRectMake searchView frame width UIScreen mainScreen bounds width 1