代码之家  ›  专栏  ›  技术社区  ›  dommer

如何使导航项uibarbuttonities直观地确认触摸?

  •  1
  • dommer  · 技术社区  · 14 年前

    我有一个uinavigationcontroller,我在其中初始化导航栏(使用单触键):

    NavigationBar.BarStyle = UIBarStyle.Black;
    NavigationBar.TintColor = UIColor.Black;
    

    在随后按下导航控制器的uiviewcontroller上,我添加了一个按钮,如下所示:

    NavigationItem.RightBarButtonItem = new UIBarButtonItem(UIBarButtonSystemItem.Add, (s, e) => HandleAddItem());
    

    但是,当我触摸按钮时,它不会改变颜色/阴影(即动画)来表示它已被触摸。类似的uibarbuttonities添加到另一个视图控制器(普通uiviewcontroller)上手动创建的uinavigationbar中,如我所料。

    当导航栏按钮位于被推到uinavigationcontroller上的uiviewcontroller上时,如何使其“闪烁”?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Sebastian Celis    14 年前

    我发现一旦你换了Uinavigationbar barStyle tintColor ,按钮的突出显示状态很可能与默认状态相同。我认为解决这个问题的最佳方法是使用从自定义视图创建的uibarbuttonitem。

    UIImage *bgImage = [UIImage imageNamed:@"button-normal.png"];
    bgImage = [bgImage stretchableImageWithLeftCapWidth:6.0 topCapHeight:0.0];
    UIImage *bgImageHighlighted = [UIImage imageNamed:@"button-highlighted.png"];
    bgImageHighlighted = [bgImageHighlighted stretchableImageWithLeftCapWidth:6.0 topCapHeight:0.0];
    
    UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [myButton setBackgroundImage:bgImage forState:UIControlStateNormal];
    [myButton setBackgroundImage:bgImageHighlighted forState:UIControlStateHighlighted];
    
    UIBarButtonItem *myItem = [[UIBarButtonItem alloc] initWithCustomView:myButton];
    

    这是一种痛苦,尤其是当你的按钮使用图像而不是标题时。我绝对建议你向苹果提交一份关于这个的bug报告。

    在您的特定情况下,只设置 巴尔特风格 UIBarStyleBlack 然后离开 丁彩 仅限财产。我也有幸只说明 丁彩 离开 巴尔特风格 设置为 UIBarStyleDefault ,只要 丁彩 不是黑色的。一般来说,A 丁彩 黑色的不太好用。