我可以在iOS导航栏中添加monochome可扩展自定义图标吗?

西蒙·沃塔

iOS的“模板图标”无法涵盖所有​​必需的图标,因此我需要在导航栏中添加一个自定义图标(“···”更多图标)。

现在有没有一种方法可以给iOS一个monochome的,可扩展的图标文件,我可以以一种可维护的方式对其进行着色(例如,与文本颜色相同),而无需为其生成位图?

当您希望将它们用作任务栏图标时,OS X会使用PDF,以便OS X可以根据亮/暗颜色主题更改图标的颜色。

瓦里夫·阿坎德·里希

你可以用

navigationItem.rightBarButtonItem?.tintColor = UIColor.redColor()

如果您想tintColor全部navigationItems使用,可以使用

let sharedApplication = UIApplication.sharedApplication()
sharedApplication.delegate?.window??.tintColor = UIColor.redColor()



TL; DR:

这是可能的,因为从iOS 7UIImage有一个renderingMode属性。

使用指定的渲染模式创建此图像的版本。默认情况下,图像的渲染模式为UIImageRenderingModeAutomatic。

@available(iOS 7.0, *)
public func imageWithRenderingMode(renderingMode: UIImageRenderingMode) -> UIImage
@available(iOS 7.0, *)
public var renderingMode: UIImageRenderingMode { get }


关于renderingMode

图像默认情况下使用UIImageRenderingModeAutomatic创建。具有此模式的图像根据其渲染的上下文被解释为模板图像或原始图像。例如,导航栏,选项卡栏,工具栏和分段控件自动将其前景图像视为模板,而图像视图和Web视图将其图像视为原始图像。您可以使用UIImageRenderingModeAlwaysTemplate强制将图像始终呈现为模板,也可以使用UIImageRenderingModeAlwaysOriginal强制将图像始终呈现为原始图像。

@available(iOS 7.0, *)
public enum UIImageRenderingMode : Int {

    case Automatic // Use the default rendering mode for the context where the image is used
    case AlwaysOriginal // Always draw the original image, without treating it as a template
    case AlwaysTemplate // Always draw the image as a template image, ignoring its color information
}

我们不需要更改navigationItem图像的呈现模式,因为导航栏控件会自动将其前景图像视为模板。

如果需要,可以使用imageWithRenderingMode()方法更改任何UIImage的呈现模式以具有此功能,例如

UIImage(named: "settings")?.imageWithRenderingMode(.AlwaysTemplate)

对于缩放,你可以参考resizableImageWithCapInsets()的方法UIImage

有关更多信息,请参见Essan Parto的 Ray Wenderlich教程
UIAppearance教程:入门

更新

在此处输入图片说明

见上图。它只有10x10像素。
该图像可能很小,但是iOS确切知道如何使用它进行绘制,因为它已经被预先切片并且可以调整大小。

例子

let controlBackground = UIImage(named: "controlBackground")?
    .imageWithRenderingMode(.AlwaysTemplate)
    .resizableImageWithCapInsets(UIEdgeInsets(top: 3, left: 3, bottom: 3, right: 3))

上,左,下,右角均未触及,图像的中间部分将被添加淀粉。有了这个小图像,您可以制作一个大矩形以保持图像角完整。

您还可以将“使用xcode权”切成.xcassets在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

添加自定义导航抽屉操作栏图标

来自分类Dev

在情节提要中,我可以在“功能”标签栏图标下放置自定义文本吗?

来自分类Dev

是否可以为CNContactViewController添加自定义导航栏?

来自分类Dev

我可以将自己的功能添加到Excel中的自定义状态栏中吗?

来自分类Dev

我可以在Flutter Bottom导航栏中的图标周围添加间距吗?

来自分类Dev

我可以在Flutter Bottom导航栏中的图标周围添加间距吗?

来自分类Dev

可以在IB的导航栏中自定义提示字符串的字体吗?

来自分类Dev

我可以为Facebook分享按钮添加自定义Facebook图标吗?

来自分类Dev

我可以为Facebook分享按钮添加自定义Facebook图标吗?

来自分类Dev

iOS自定义右侧导航栏

来自分类Dev

iOS自定义形状导航栏

来自分类Dev

我可以在Ubuntu Unity中创建自定义“任务栏”吗?

来自分类Dev

我可以在Ubuntu Unity中创建自定义“任务栏”吗?

来自分类常见问题

我们可以在Android中创建自定义的Synthetic Kotlin扩展吗?

来自分类Dev

我可以在Espresso中扩展自定义应用程序吗?

来自分类Dev

我可以在Haskell上创建可扩展的(通过附加的自定义插件)应用程序吗?

来自分类Dev

如何打开和关闭导航抽屉,单击Android中的自定义操作栏图标?

来自分类Dev

更改android自定义底部导航栏中图标和文本的对齐方式

来自分类Dev

我可以将Click Listener添加到自定义Toast中吗

来自分类Dev

我可以在这些摘要中添加自定义链接吗?

来自分类Dev

我可以通过WordPress中的仪表板添加自定义页面模板吗?

来自分类Dev

在AmCharts中,我可以向饼图中添加其他或自定义dataField吗?

来自分类Dev

我可以在Ektron中添加自定义管理页面吗

来自分类Dev

我可以通过WordPress中的仪表板添加自定义页面模板吗?

来自分类Dev

我可以插入Visual Studio中的调试按钮以添加自定义构建功能吗?

来自分类Dev

我可以在iOS中自定义Twitter工具包的登录按钮吗?

来自分类Dev

我们可以在iOS SDK中自定义ABNewPersonController吗?

来自分类Dev

自定义iOS导航栏的高度,添加背景,菜单按钮(快速)

来自分类Dev

我可以在Laravel中自定义速率限制吗?

Related 相关文章

  1. 1

    添加自定义导航抽屉操作栏图标

  2. 2

    在情节提要中,我可以在“功能”标签栏图标下放置自定义文本吗?

  3. 3

    是否可以为CNContactViewController添加自定义导航栏?

  4. 4

    我可以将自己的功能添加到Excel中的自定义状态栏中吗?

  5. 5

    我可以在Flutter Bottom导航栏中的图标周围添加间距吗?

  6. 6

    我可以在Flutter Bottom导航栏中的图标周围添加间距吗?

  7. 7

    可以在IB的导航栏中自定义提示字符串的字体吗?

  8. 8

    我可以为Facebook分享按钮添加自定义Facebook图标吗?

  9. 9

    我可以为Facebook分享按钮添加自定义Facebook图标吗?

  10. 10

    iOS自定义右侧导航栏

  11. 11

    iOS自定义形状导航栏

  12. 12

    我可以在Ubuntu Unity中创建自定义“任务栏”吗?

  13. 13

    我可以在Ubuntu Unity中创建自定义“任务栏”吗?

  14. 14

    我们可以在Android中创建自定义的Synthetic Kotlin扩展吗?

  15. 15

    我可以在Espresso中扩展自定义应用程序吗?

  16. 16

    我可以在Haskell上创建可扩展的(通过附加的自定义插件)应用程序吗?

  17. 17

    如何打开和关闭导航抽屉,单击Android中的自定义操作栏图标?

  18. 18

    更改android自定义底部导航栏中图标和文本的对齐方式

  19. 19

    我可以将Click Listener添加到自定义Toast中吗

  20. 20

    我可以在这些摘要中添加自定义链接吗?

  21. 21

    我可以通过WordPress中的仪表板添加自定义页面模板吗?

  22. 22

    在AmCharts中,我可以向饼图中添加其他或自定义dataField吗?

  23. 23

    我可以在Ektron中添加自定义管理页面吗

  24. 24

    我可以通过WordPress中的仪表板添加自定义页面模板吗?

  25. 25

    我可以插入Visual Studio中的调试按钮以添加自定义构建功能吗?

  26. 26

    我可以在iOS中自定义Twitter工具包的登录按钮吗?

  27. 27

    我们可以在iOS SDK中自定义ABNewPersonController吗?

  28. 28

    自定义iOS导航栏的高度,添加背景,菜单按钮(快速)

  29. 29

    我可以在Laravel中自定义速率限制吗?

热门标签

归档