【问题标题】:how to customize UIBarButtonItem in ios5如何在 ios5 中自定义 UIBarButtonItem
【发布时间】:2012-01-30 23:24:32
【问题描述】:

我想自定义 UIBarButtonItem,这是我的代码。

在ios4.3可以用,但是在ios5,就很奇怪了。 uibarbuttonitem消失不见了,但是你点击它仍然有效果。因为是透明的。

我需要帮助,如何使uibarbuttonitem显示。谢谢

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(0, 0, 50, 30);
[btn setBackgroundImage:[UIImage imageNamed:@"btnRegister.png"] forState:UIControlStateNormal];
[btn setTitle:@"register" forState:UIControlStateNormal];
[btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(registerClick:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithCustomView:btn];
self.navigationItem.rightBarButtonItem = item1;

【问题讨论】:

    标签: ios5 uibarbuttonitem


    【解决方案1】:

    这里有一个关于 iOS 5 中新的自定义功能的很棒的教程:http://www.raywenderlich.com/4344/user-interface-customization-in-ios-5

    这是该网站处理 UIBarButtonItems 自定义的代码副本,它非常不言自明:

    UIImage *button30 = [[UIImage imageNamed:@"button_textured_30"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];
    UIImage *button24 = [[UIImage imageNamed:@"button_textured_24"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];
    
    [[UIBarButtonItem appearance] setBackgroundImage:button30 forState:UIControlStateNormal 
    barMetrics:UIBarMetricsDefault];
    [[UIBarButtonItem appearance] setBackgroundImage:button24 forState:UIControlStateNormal 
    barMetrics:UIBarMetricsLandscapePhone];
    
    [[UIBarButtonItem appearance] setTitleTextAttributes:
        [NSDictionary dictionaryWithObjectsAndKeys:
        [UIColor colorWithRed:220.0/255.0 green:104.0/255.0 blue:1.0/255.0 alpha:1.0], 
        UITextAttributeTextColor, 
        [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0], 
        UITextAttributeTextShadowColor, 
        [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], 
        UITextAttributeTextShadowOffset, 
        [UIFont fontWithName:@"AmericanTypewriter" size:0.0], 
        UITextAttributeFont, 
        nil] 
    forState:UIControlStateNormal];
    

    【讨论】:

      【解决方案2】:

      我的问题与此类似。就我而言,该按钮似乎没有启用。而且当你放入它仍然有效果。一个小解决方案是用白色更改按钮的色调,但我正在寻找更好的方法:)

      我的代码是:

      buttonImage = [UIImage imageNamed:@"top_icon_share.png"];
      UIButton *buttonShare = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height)];
      [buttonShare setBackgroundImage:buttonImage forState:UIControlStateNormal];
      [buttonShare addTarget:self action:@selector(buttonSharePressed)
            forControlEvents:UIControlEventTouchUpInside];
      [buttonShare setShowsTouchWhenHighlighted:YES];];
          UIBarButtonItem *buttonBarShare = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"top_icon_share.png"] style:UIBarButtonItemStylePlain target:self action:@selector(buttonSharePressed:)];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-07
        相关资源
        最近更新 更多