iOS 8 选项卡栏项目背景颜色

2024-07-04

上周我一直在努力寻找解决方案,但在尝试了我能找到或想到的所有可能的解决方案后,我没有运气。我发现并尝试过的每个解决方案要么不起作用,要么已经过时。

我有 5 个UITabBarItem's in a UITabBar放置在UITabBarController。我想改变背景颜色UITabBarItem当它被选择时,当然当所选项目改变时它会变回来。

我在 Xcode 6.3.1 中使用 Swift 和 iOS SDK 8.3。如果你只能用 Objective-C 来回答也没关系,任何答案都会有帮助!预先感谢大家,我真的很感激!

编辑:这是我希望它做什么的直观示例。

不同的背景颜色 https://i.stack.imgur.com/CfIaO.jpg


在你的tabBarController中,你可以设置默认的UITabBar的tintColor、barTintColor、selectionIndicatorImage(这里有点作弊)和图像的renderingMode,请参阅下面的注释:

    class MyTabBarController: UITabBarController, UINavigationControllerDelegate {
      ...
      override func viewDidLoad() {
        ...
        // Sets the default color of the icon of the selected UITabBarItem and Title
        UITabBar.appearance().tintColor = UIColor.redColor()

        // Sets the default color of the background of the UITabBar
        UITabBar.appearance().barTintColor = UIColor.blackColor()

        // Sets the background color of the selected UITabBarItem (using and plain colored UIImage with the width = 1/5 of the tabBar (if you have 5 items) and the height of the tabBar)
        UITabBar.appearance().selectionIndicatorImage = UIImage().makeImageWithColorAndSize(UIColor.blueColor(), size: CGSizeMake(tabBar.frame.width/5, tabBar.frame.height))

        // Uses the original colors for your images, so they aren't not rendered as grey automatically.
        for item in self.tabBar.items as! [UITabBarItem] {
          if let image = item.image {
            item.image = image.imageWithRenderingMode(.AlwaysOriginal)
          }
        }
      }
      ...
    }

您将需要扩展 UIImage 类以制作具有您需要的尺寸的纯色图像:

extension UIImage {
  func makeImageWithColorAndSize(color: UIColor, size: CGSize) -> UIImage {
    UIGraphicsBeginImageContextWithOptions(size, false, 0)
    color.setFill()
    UIRectFill(CGRectMake(0, 0, size.width, size.height))
    var image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return image
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 8 选项卡栏项目背景颜色 的相关文章

随机推荐

  • SwipeListView 使用 NullPointerException

    我正在尝试使用SwipeListView 但是当我触摸应用程序上的某个项目时 它会崩溃 日志信息就在那里 05 26 21 52 26 545 E AndroidRuntime 19862 java lang NullPointerExce
  • MemoryStream - 无法访问关闭的流

    Hi why using var sw new StreamWriter ms 回报Cannot access a closed Stream exception Memory Stream位于此代码之上 using var ms new
  • style.backgroundColor 在 JavaScript 中是一个空字符串

    我下面有以下代码 我正在尝试设置背景颜色 但是 背景颜色返回为空字符串 我不知道为什么 它与 javascript 类型有关吗 function function1 var color document getElementById rg
  • 即使列不占据整个宽度,表格也会占据整个宽度

    我有一个像这样的 HTML 表格 table border collapse collapse table thead th nth child 1 width 180px table thead th nth child 2 width
  • 同一产品的多个图像,可访问性要求

    对于具有单个产品的多个图像的网页 例如具有不同角度的图像 是否有要求alt每个图像的标签 在亚马逊上查看示例 似乎他们只有一个alt第一张产品图片上有标签 但之后就没有了alt tag or aria相关标签 第一个例子在这里 https
  • 显示大于或等号

    我有一个这样生成的图 ggplot dt 2 aes x AgeGroup y Prevalence geom errorbar aes ymin lower ymax upper colour black width 2 geom poi
  • 使用 SenchaTouch 2 只显示进度条

    我刚刚通过命令使用 Sencha Touch 2 创建了默认示例应用程序 sencha app create FirstApp D Sencha MyFirstApp all 我尝试运行index html 但它在我的chrome 中只显示
  • ProcessPoolExecutor 日志记录无法在 Windows 上登录函数内部,但在 Unix / Mac 上则不行

    当我在 Windows 计算机上运行以下脚本时 我没有看到来自log pid函数 但是当我在 Unix Mac 上运行时我会这样做 我之前读过 Windows 上的多处理与 Mac 上的不同 但我不清楚应该进行哪些更改才能使该脚本在 Win
  • 检索电子邮件的备用视图

    我似乎无法从 System Net Mail AlternateView 检索 AlternateView 我有一个通过 POP3 提取电子邮件的应用程序 我了解如何创建用于发送的备用视图 但在查看电子邮件时如何选择备用视图 我已将收到的电
  • 表格视图单元格作为按钮

    我正在尝试将已分组的表视图单元格设置为按钮 但我似乎无法在 XCode 4 2 的界面生成器中或以编程方式找到执行此操作的位置 我尝试将表视图单元格链接到 IBAction 但它只允许我创建或链接到 IBOutlet 作为临时修复 我在单元
  • tf.contrib.rnn.BasicLSTMCell 是单个 LSTM 单元还是 LSTM 层?

    在tensorflow中 有一个lstm实现称为BasicLSTMCell哪个在tf contrib rnn BasicLSTMCell 并且它有一个参数num units这意味着 LSTM 单元中的单元数 但我不知道这意味着什么 如果我像
  • 如何在 MKMapView iOS 中显示多个注释?

    我是 iOS 开发新手 我想在 iOS 中的 MKMapViewController 中显示多个注释 为此我在 viewDidLoad 方法中编写了代码 void viewDidLoad super viewDidLoad self map
  • Jquery 密码字段的默认值

    我在用这个 Jquery 插件 http mudge github com jquery example 用于使用单击时消失的文本填充输入 它对于密码字段来说并不理想 因为所有内容都显示为点 在开始输入之前使默认文本在密码字段中可见的好方法
  • 没有身份验证的 Android SyncAdapter 与 Android 服务

    我不希望对我的同步适配器使用身份验证 因为我计划使用它来同步搜索查询的 Twitter 公共时间线 我应该使用 SyncAdapter 还是任何普通服务 在此用例中 两者都可以正常工作 如果您的应用程序可能包含多个用户帐户 那么采用 Syn
  • 布局页面的下拉列表 - MVC

    我的问题 布局页面的下拉列表 我读过这篇文章 ASP NET MVC Razor 将模型传递给布局 https stackoverflow com questions 4154407 asp net mvc razor pass model
  • Angular 7 - 尝试在上传之前创建音频文件的预览

    我想要的结果是在将音频文件上传到服务器之前创建音频文件的预览 但是文件输入后 什么也没有发生 文件不会动态添加到 aduio 标记中 我也不会收到任何错误 控制台显示文件已加载 任何帮助将不胜感激 我的组件html有
  • iPhone 上的弱链接无法正常工作

    我有一个 iPhone 应用程序 主要针对 3 0 但它利用了可用的新 API 代码是这样的 if UIApplicationDidEnterBackgroundNotification NULL nc addObserver self s
  • Android 4.0 与 Canvas.clipPath 的兼容性问题

    最近 我的应用程序收到了很多评论 说 它在带有 CM9 的 Android Ice Cream Sandwich 上不起作用 我无法在运行 Android 4 0 的模拟器上重现该错误 并且由于 Android 市场的工作方式 我无法联系那
  • 如何禁用已经预订的日期?

    我有一个预订酒店房间的表格 其中有两个字段 称为入住和退房 我在这里使用 jQuery datepicker 预订房间 我不想显示那些已经预订的日期 我已经尝试过这样的 function var excludedCheckInDates C
  • iOS 8 选项卡栏项目背景颜色

    上周我一直在努力寻找解决方案 但在尝试了我能找到或想到的所有可能的解决方案后 我没有运气 我发现并尝试过的每个解决方案要么不起作用 要么已经过时 我有 5 个UITabBarItem s in a UITabBar放置在UITabBarCo