如何自定义我的UITabBar。在梯度背景的白色象

时间:2014-06-21 08:11:00

标签: ios objective-c customization uitabbar uitabbaritem

iOS 7.0
我需要让你的设计 UITabBar 。图片(this link)显示了它现在的样子以及它应该如何显示。不同之处在于:
1)按钮上的图像有些脏的颜色,应该是白色的
2)所选项目以较暗的背景颜色突出显示。现在他根本没有突出显示。

以下是我在应用程序中的 AppDelegate.m 中定义设计的方法:didFinishLaunchingWithOptions

    // Background image for TabBar
    UIImage *backgroundDownImage = [UIImage imageNamed:@"background_320_49.png"];
    // Mode UIImageResizingModeStretch
    backgroundDownImage = [backgroundDownImage resizableImageWithCapInsets:UIEdgeInsetsZero resizingMode:UIImageResizingModeStretch];
    // Set background image for all UITabBar in application
    [[UITabBar appearance] setBackgroundImage:backgroundDownImage];
    // White color for TabBar buttons
    [[UITabBar appearance] setTintColor:[UIColor whiteColor]];

    // Special font for all UITabBarItem
    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Xnjslkpqqovrwqxfnmropbgqtzp" size:0], UITextAttributeFont, nil] forState:UIControlStateNormal];

我尝试了4种变体:


1)在方法中 - (id)initWithNibName旧代码setFinishedSelectedImage + withFinishedUnselectedImage
2)在方法中 - (id)initWithNibName新代码setImage + SetSelectedImage
3)在方法 - (void)viewDidLoad旧代码中
4)在方法 - (void)viewDidLoad新代码

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Variant 1
    [self.tabBarItem setImage:[[UIImage imageNamed:@"Live.png"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal]];
    [self.tabBarItem setSelectedImage:[[UIImage imageNamed:@"Live.png"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal]];

    // Variant 2
    //[self.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"Live.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"Live.png"]];

    [CommonUse showLiveVideoFromController:self];
}

在所有情况下,都会显示图标。方法initWithNibName(选项1和2)颜色图标上没有任何操作。方法viewDidLoad既可以使用新旧代码,也可以使用奇怪的方式。首次运行应用程序时,只有第一个图标是白色,而所有其他图标都是灰色。如果您单击任何其他图标然后返回到第一个图标,此图标将变为白色(但只有图片!文本仍为灰色)。 事实证明,图标的颜色只影响方法viewDidLoad,但不完全 - 只缺少其他东西。

也许为Selected和NoSelected绘制两组图标。那是图标,图像和文字描述为图形。但仍然有两点:1)当你第一次启动应用程序时,所有的图标都是灰色的,只有第一个图标是白色的。 2)当您更改屏幕宽度时,如果按钮不要分散。

2 个答案:

答案 0 :(得分:0)

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        [self.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"partners_hover.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"partners_small.png"]];
    }
    return self;
}

答案 1 :(得分:0)

要更改未选定项目(图标)的颜色,您可以使用UITabBar属性 unselectedItemTintColor

<div id="root">
  <button @mouseDown.middle="test">
    Click Me
  </button>
</div>

new Vue({
  el: '#root',
  methods: {
    test () {
        alert('me')
    }
  }
})