当前位置: 首页 > 知识库问答 >
问题:

使用swift Xcode 6的默认选项卡栏项目颜色

夏飞鹏
2023-03-14

环境:-Xcode 6 beta 4-Swift语言-iOS选项卡式应用程序(默认Xcode项目)

如何将选项卡的默认灰色更改为其他颜色?(最好是在全球范围内)

就我的研究而言,我需要以某种方式将每个选项卡的图像渲染模式更改为原始渲染模式,但我不知道如何更改

共有3个答案

鱼锦
2023-03-14

斯威夫特2.0

要更改选项卡栏图像的默认颜色,请将下面的代码添加TabBarController类的viewDidLoad方法:

for item in self.tabBar.items! as [UITabBarItem] {
    if let image = item.image {
      item.image = image.imageWithColor(UIColor.yellowColor()).imageWithRenderingMode(.AlwaysOriginal)
    }
}

更新Imagewith Color扩展。与上述方法一起使用,并且应该放在您的TabBarController类之外:

extension UIImage {
    func imageWithColor(tintColor: UIColor) -> UIImage {
        UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)

        let context = UIGraphicsGetCurrentContext()! as CGContextRef
        CGContextTranslateCTM(context, 0, self.size.height)
        CGContextScaleCTM(context, 1.0, -1.0);
        CGContextSetBlendMode(context, CGBlendMode.Normal)

        let rect = CGRectMake(0, 0, self.size.width, self.size.height) as CGRect
        CGContextClipToMask(context, rect, self.CGImage)
        tintColor.setFill()
        CGContextFillRect(context, rect)

        let newImage = UIGraphicsGetImageFromCurrentImageContext() as UIImage
        UIGraphicsEndImageContext()

        return newImage
    }
}

没有改变文本的着色方式,但仅供参考。还应该添加下面的代码到viewddLoad

// you can add this code to you AppDelegate application:didFinishLaunchingWithOptions: 
// or add it to viewDidLoad method of your TabBarController class
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.magentaColor()], forState:.Normal)
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.redColor()], forState:.Selected)
雍骏俊
2023-03-14
匿名用户

我没有足够的声誉评论的评论但许多人有兴趣如何改变所选图像的颜色

如果让检查,只需添加另一个

if let image = item.image

就像这样:

if let selectedImage = item.selectedImage {
            item.selectedImage = selectedImage.imageWithColor(UIColor.yellowColor()).imageWithRenderingMode(.AlwaysOriginal)
        }

这完美地解决了这个问题。还有一点补充,因为你需要Swift 1.2和Xcode 6.3.2

for item in self.tabBar.items as! [UITabBarItem]

而不是

for item in self.tabBar.items as [UITabBarItem]

希望这有帮助!

宋腾
2023-03-14

每个(默认)标签栏项由文本和图标组成。通过指定外观,可以很容易地全局更改文本颜色:

// you can add this code to you AppDelegate application:didFinishLaunchingWithOptions: 
// or add it to viewDidLoad method of your TabBarController class
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.magentaColor()], forState:.Normal)
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.redColor()], forState:.Selected)

有了图像,情况就复杂了一点。不能全局定义它们的外观。您应该在TabBarController类中重新定义它们。将下面的代码添加TabBarController类的viewDidLoad方法:

for item in self.tabBar.items as [UITabBarItem] {
    if let image = item.image {
        item.image = image.imageWithColor(UIColor.yellowColor()).imageWithRenderingMode(.AlwaysOriginal)
    }
}

正如我们所知,imageWithColor(…)方法。下面是扩展实现:

// Add anywhere in your app
extension UIImage {
    func imageWithColor(tintColor: UIColor) -> UIImage {
        UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)

        let context = UIGraphicsGetCurrentContext() as CGContextRef
        CGContextTranslateCTM(context, 0, self.size.height)
        CGContextScaleCTM(context, 1.0, -1.0);
        CGContextSetBlendMode(context, .Normal)

        let rect = CGRectMake(0, 0, self.size.width, self.size.height) as CGRect
        CGContextClipToMask(context, rect, self.CGImage)
        tintColor.setFill()
        CGContextFillRect(context, rect)

        let newImage = UIGraphicsGetImageFromCurrentImageContext() as UIImage
        UIGraphicsEndImageContext()

        return newImage
    }
}

Imagewith Color借用了这个答案:https://stackoverflow.com/a/24545102/3050466

 类似资料:
  • 问题内容: 环境:-Xcode 6 beta 4-Swift语言-iOS选项卡式应用程序(默认xCode项目) 如何将选项卡的默认灰色更改为其他颜色?(最好是全球) 就我的研究而言,我需要以某种方式将每个选项卡的图像渲染模式更改为“原始”渲染模式,但是我不知道如何 问题答案: 每个(默认)选项卡栏项均由文本和图标组成。通过指定外观可以很容易地全局更改文本颜色: 对于图像,情况要复杂一些。您不能全局

  • 主要内容:ion-tabs,实例,ion-tab,$ionicTabsDelegateion-tabs ion-tabs 是有一组页面选项卡组成的选项卡栏。可以通过点击选项来切换页面。 对于 iOS,它会出现在屏幕的底部,Android会出现在屏幕的顶部(导航栏下面)。 用法 实例 <ion-tabs class="tabs-positive tabs-icon-only"> <ion-tab title="首页" icon-on="ion-ios-filing" icon-off

  • ion-tabs ion-tabs 是有一组页面选项卡组成的选项卡栏。可以通过点击选项来切换页面。 对于 iOS,它会出现在屏幕的底部,Android会出现在屏幕的顶部(导航栏下面)。 用法<ion-tabs class="tabs-positive tabs-icon-only"> <ion-tab title="首页" icon-on="ion-ios-filing" icon-off="io

  • 问题内容: 我正在研究适用于Python的matplotlib库。我开始理解它的一些基本复杂性,因为pylab和pyplot之间的区别,并且我正在尝试复制和修改图库中的一些示例。 我仍然不清楚的一件事是配置文件matplotlibrc的实际作用。 目前,我使用Windows 7下的WinPython 3.3.5.0 64位分发版。.matplotlibrc文件位于WinPython-64bit-3

  • 问题内容: 我有一个具有日期时间字段的模型: 当我在内置的django admin中检查该应用程序时,还会附加时间,因此,如果你尝试保存它,则会返回错误。如何设置默认的日期呢?(也不起作用) 问题答案: 这就是为什么你应该始终导入基本模块:而不是该模块中的类的原因f。 你犯的另一个错误是使用实际调用默认的函数。这意味着所有模型都将在首次定义类时获得日期-因此,如果你的服务器在不重新启动Apache

  • 我对tabView有问题。第一个选项卡应始终显示相同的内容(称为搜索模板,用#{not curSearch.isClosable()}标识)。所有其他选项卡都是搜索实例(用#{curSearch.isClosable()}标识) 代码如下: 不幸的是,在第一个选项卡上有一些被称为curSearch对象的方法,这些方法仅在第二个选项卡和后面的选项卡上使用。如果我不使用ui:insert,它不会改变任