- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我在谷歌上搜索了很多次,但没有找到直接和统一的答案。
我想自定义我的UITabBarController
,这样:
UITabBar
本身是全黑的UITabBar
变黑我猜我需要为此使用 UIAppearance
API,实际上我可以使用以下方法将 UITbarBar
变黑:[[UITabBar appearance] setBarTintColor:[UIColor blackColor]];
.
然而,文本项的颜色似乎并没有达到我想要的效果,谷歌搜索后,以下解决方案对我来说很有意义,但它只会将非突出显示状态更改为白色,突出显示也保持白色...
NSDictionary *titleAttributes = @{NSForegroundColorAttributeName : [UIColor whiteColor]};
[[UITabBarItem appearance] setTitleTextAttributes:titleAttributes forState:UIControlStateNormal];
UIColor *titleHighlightedColor = [UIColor redColor];
NSDictionary *highlightedTitleAttributes = @{NSForegroundColorAttributeName : titleHighlightedColor};
[[UITabBarItem appearance] setTitleTextAttributes:highlightedTitleAttributes forState:UIControlStateHighlighted];
关于彩色图标,目前的方法是简单地在 Storyboard 中设置图标,如下所示:
但这并不能满足我的要求,它只会在未选中该项目时以灰色显示整个图标。选择项目后,图标会完全消失。
这是原始图标:
这是未选中项目时的样子:
这里是选中状态,如前所述,图标完全消失了:
所以,我的问题是我能达到上述要求的精确程度。我目前缺少什么?在代码中做所有事情比在 Storyboard 中更好吗?
注意:我的目标是高于 7.0 的 iOS 版本,因此如果 iOS 7 和 iOS 8 之间的行为不同,请包括任何特定于版本的信息。
最佳答案
我遇到了和你一样的问题。据我所知,不同的 iOS 版本没有区别。
我像这样以编程方式解决了它:
将条形颜色变为黑色如下(您已经说过)(在 AppDelegate 中):
UITabBar.appearance().barTintColor = UIColor.blackColor()
为了设置不同状态的标题颜色,我使用了这段代码(在 AppDelegate 中):
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName!: UIColor.redColor()], forState:.Selected)
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName!: UIColor.whiteColor()], forState:.Normal)
(和 4.)您可以通过以编程方式设置图像并更改渲染模式 (imageWithRenderingMode:
) 到 UIImageRenderingMode.AlwaysOriginal
,这看起来如下(在所有 View Controller 的第一个 View Controller 类中执行此操作):
var recentsItem = self.tabBarController!.tabBar.items![0] as UITabBarItem
var recentsItemImage = UIImage(named:"recents.png")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
var recentsItemImageSelected = UIImage(named: "recentsSelected.png")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
recentsItem.image = recentsItemImage
recentsItem.selectedImage = recentsItemImageSelected
希望对您有所帮助,如果您有以下任何问题,请随时问我。
关于ios - 如何在 iOS 7 和 iOS 8 上正确自定义 UITabBar 和 UITabBarItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27144220/
我想将 UITabBarItem 1 的标题更改为 UITabBarItem 4 的标题。 两者都在同一个 UITabBarController 中。 我该如何更改这些标题? 最佳答案 NSArray
在我们的应用程序中,我们以编程方式动态使用自定义 UITabBarItem(见下文)。我们使用 ImageAssets 来获得暗/亮正确的图像。但它不能 100% 工作:如果我们重新启动应用程序,那就
我的代码在 Xcode 6 中运行良好。但是,更新到 Xcode 7 后,我收到了近 20 个错误和 50 个警告。这可能是 Swift 2 中的一些语法更改 解决了所有这些问题,但无法弄清楚这个:从
我的代码在 Xcode6 中运行良好。但是,更新到 Xcode7 后,我收到了近 20 个错误和 50 个警告。这可能是 Swift 2 中的一些语法更改 解决了所有这些问题,但无法弄清楚这个:从 U
尽我所能,我无法让它发挥作用。这是我的最新尝试。有人可以告诉我为什么这不起作用吗? 在我的 View Controller 的 init 方法调用的方法中: UIImage *image = [UII
在 iOS 中,TabBarController 中的 TabBar 属性是只读的。如何将自定义项目与特定 View Controller 关联?如何访问 tabBar 内的 UITabBarItem
我必须在 UITabBarItem 中设置一个有点长的标题;所以问题是: 是否可以在 UITabBarItem 中设置包含两行的标题? 我尝试过以下方法(但不起作用): UITabBarItem* m
UITabBarItem 图像的最大尺寸是多少? 最佳答案 来自苹果的 UITabBarItem 引用: The item’s image. If nil, an image is not displ
当我使用此方法初始化 UITabBarItem 时: - (id)initWithTitle:(NSString *)title image:(UIImage *)image tag:(NSInteg
如何从 UITabBar 中删除 UITabBarItem? 我还没有尝试过任何东西,因为我没有从 Google 搜索或 UITabBar、UITabBarController 或 UITabBarI
我正在尝试在 xcode、ios 中自定义我的 TabBar,但是我刚刚发现 ppl 说这是不可自定义的!另外,我确实找到了某种解决方案,但它们都不适合我。 我非常想更改 UITabBarItem 标
iPhone 版 Skype 应用程序使用动画 TabBar 图标。例如,在登录期间,最右侧的选项卡图标显示循环箭头。调用“调用”选项卡时,图标会轻轻闪烁,这显然是通过动画完成的。 我想知道如何为选项
我有一个带有四个 UIViewController 的 Nib ,每个都有一个 UITabBarItem。在运行时,根据用户选项,我需要显示或隐藏其中一个 UITabBarItems。我不知道如何删除
我正在尝试在我的应用程序中为 UITabBarItem 设置动画。 我想让图像“脉动”,向用户表明有新的东西。 我一直在寻找一段时间,但我没有找到任何东西。我将使用 UIView 的动画,但我找不到访
我有一个 UITabBarController里面有几个标签栏项目。第一个标签栏项目有一个名为 A 的 View 。它有一个名为 Click 的按钮.当我单击该按钮时, View 将导航到另一个 Vi
我想在每次选择时重新实例化与带有标签 num 的 UITabBarItem 关联的 View Controller 。我能找到的最佳解决方案使用委托(delegate)方法 tabBarControl
由于某种原因,我的 UITabBarItem 只有一张图像未显示。在我重构 Storyboard来组织它们之后,这种情况开始发生。当我运行应用程序时,不会向调试器触发任何消息,它只是不显示。图像正在
我的 Swift 4 UITabBarController 通常有四个 UITabBarItem 项。在某些情况下,它可以有五个而不是四个,但我总是希望最右边的按钮是相同的。这意味着我需要在第四个“槽
您可以看到带有阴影和类似预渲染图标的房屋图片。我怎样才能删除这个效果? 最佳答案 您需要在您的 UITabBarItem 上同时设置完成和未完成的图像,否则框架会自动为其添加光彩。以下是您的操作方法。
我会尽量解释我的问题。 当我的应用程序启动时,它会在 appdelegate 类中进行检查: if([[NSUserDefaults standardUserDefaults] boolForKey
我是一名优秀的程序员,十分优秀!