【问题标题】:Swift Change UITabBarItem image and tint color dynamicallySwift更改UITabBarItem图像并动态着色
【发布时间】:2023-03-20 02:25:01
【问题描述】:

我有一个应该由用户填写的表格,该表格分为 3 个UITabBarItems 和 1 个UITabBarController。我想动态更改UITabBarItem 的图像。例如,用户处于第一步,在他完成该步骤所需的配置后,我希望负责此UIViewControllerUITabBarItem 将其图像更改为表示用户可以继续执行步骤的勾号两个

我尝试将当前视图控制器中的tabBarItem设置为所有值完成后的图像,但没有成功

if manufacturerCompleted
    && modelCompleted
    {
        let image = UIImage(named: "tick")
        self.tabBarItem.image = image?.withRenderingMode(.automatic)
    }

提前感谢您! :)

【问题讨论】:

  • 什么时候调用代码?

标签: ios swift uiviewcontroller uitabbarcontroller uitabbaritem


【解决方案1】:

就我个人而言,我没有看到代码中有任何错误。也许它没有被执行?

我想,你没有一个 @IBAction 函数,它在文本更改事件(或任何它被调用的事件)上被调用。尝试设置一个,将其连接到情节提要,然后重试。

哦,处理选项的更“快速”方式是“可选绑定”。 See more here.

var manufacturerCompleted = false
var modelCompleted = false

@IBAction func handleKeyDown(_ sender: UITextField) {
  updateManufacturerComplete(sender)
  updateModelComplete(sender)

  if manufacturerCompleted && modelCompleted {
    if let image = UIImage(named: "tick") as UIImage? {
      self.tabBarItem.image = image.withRenderingMode(.automatic)
    }
  }
}

func updateManufacturerComplete(_ sender: UITextField) {
  // Your condition here
  // ...
  self.manufacturerCompleted = true
}

func modelCompleted(_ sender: UITextField) {
  // Your condition here
  // ...
  self.modelCompleted = true
}

【讨论】:

  • 我以编程方式完成所有工作,并且代码已执行我确定..用断点检查它
  • @PetioVishnevski 代码是否被执行并且没有任何反应?你有任何错误吗?控制台输出是什么?如果代码被执行但没有任何反应,那么控制台中应该有一些东西。 And have a look at this,该用户也有同样的问题。
  • 代码执行是。我发现了错误... UITabBarItem 是使用系统图标创建的,而不是自定义图像...我现在成功更改了图像。我还有一个问题。图像是否应该是例如 24x24 大小,或者我可以在将其设置为标签栏时以某种方式调整其大小
  • 我在苹果开发者文档中找到了这个,我认为它会起作用developer.apple.com/documentation/uikit/uiimage/…谢谢你们。很抱歉,我的愚蠢错误耽误了您的时间。
  • 查看page 了解UITabBar 图像尺寸。 @PetioVishnevski
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 2018-01-01
相关资源
最近更新 更多