【问题标题】:Navigation Bar Button Item Tint导航栏按钮项目色调
【发布时间】:2014-04-01 15:42:27
【问题描述】:

是否可以将导航栏按钮项拖动到导航栏,使用图像,并且不应用色调以使原始图像按预期显示?还是只能通过代码添加导航栏按钮项来实现?

示例:我的深色背景导航栏的默认色调为白色,但我想为其中一个按钮显示一个橙色图像图标。如果我拖动一个条形按钮项并设置图像,它会显示为白色。我可以更改(或删除)这个按钮的色调吗?或者,我是否需要忘记可视化编辑器并以编程方式创建此按钮来控制色调?

【问题讨论】:

    标签: ios xcode uibarbuttonitem


    【解决方案1】:

    如果要保持图像的原始颜色,则必须在代码中进行:

    [button setImage:[[UIImage imageNamed:@"imageName.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];
    

    如果您想覆盖按钮的色调(例如:仅橙色),您可以在情节提要中实现。只需将 Xcode 的 Attributes Inspector 内的 Bar Button Itemtint 颜色设置为所需的颜色:

    【讨论】:

    • 我就是这么想的。谢谢!
    【解决方案2】:

    这是 lootsch 的(优秀)答案转换为 Swift 3 / Swift 4:

    barButton.image = UIImage(named: "imageName")?.withRenderingMode(.alwaysOriginal)

    【讨论】:

      【解决方案3】:

      要保持图像的原始颜色,您必须通过代码而不是故事板将图像分配给按钮。

      1. 在您的类文件(通常是 ViewController)中引用您的 Button Outlet
      2. 通过代码将图像分配给按钮:

        [self.bbiHome setImage:[[UIImage imageNamed:@"icon.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];

      【讨论】:

        【解决方案4】:

        您可以默认设置色调颜色。

        【讨论】: