【问题标题】:Title on custom UINavigationItem is not shown未显示自定义 UINavigationItem 上的标题
【发布时间】:2011-10-27 05:41:47
【问题描述】:

我正在使用自定义背景图像和标题创建自定义 UINavigationItem。图像显示,但标题不显示。有什么问题? 我是这样做的:

UIButton *button =  [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setImage:[UIImage imageNamed:@"bar_button.png"] forState:UIControlStateNormal]; 
[button setBackgroundImage:[UIImage imageNamed:@"bar_button_black.png"] forState:UIControlStateSelected];
[button setBackgroundImage:[UIImage imageNamed:@"bar_button_black.png"] forState:UIControlStateHighlighted];
[button setTitle:@"Cancel" forState:UIControlStateNormal];
[button setTitle:@"Cancel" forState:UIControlStateSelected];
[button setTitle:@"Cancel" forState:UIControlStateHighlighted];
[button addTarget:self action:@selector(closeButtonClicked) forControlEvents:UIControlEventTouchUpInside]; 

[button setFrame:CGRectMake(0, 0, 49, 30)]; 
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];

【问题讨论】:

    标签: iphone objective-c xcode uinavigationitem


    【解决方案1】:

    您需要将图像设置为 backgroundImage 而不是直接的。如果你像这样设置图像

    [button setImage:[UIImage imageNamed:@"bar_button.png"] forState:UIControlStateNormal]; 
    

    标题不会显示

    这样设置

    [button setBackgroundImage:[UIImage imageNamed:@"bar_button.png"] forState:UIControlStateNormal]; 
    

    【讨论】:

      【解决方案2】:

      我认为你必须删除:

      [button setImage:[UIImage imageNamed:@"bar_button.png"] forState:UIControlStateNormal]; 
      

      之后会出现标题

      【讨论】:

        【解决方案3】:

        要么删除此行

        [button setImage:[UIImage imageNamed:@"bar_button.png"] forState:UIControlStateNormal]; 
        

        或者您可以将标题颜色更改为其他颜色。希望它能解决您的问题。

        将其设置为 DrakgrayColor 或其他可以克服图像颜色的颜色。

        【讨论】:

        • 大概删除图像不是一个选项,因为这样按钮看起来就错了。更改标题颜色会更好。
        【解决方案4】:

        好的。找到了解决方法,但我不确定是否允许:

        UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Close",@"Close") style:UIBarButtonItemStylePlain target:self action:@selector(closeButtonClicked)];
        [self.navigationItem setLeftBarButtonItem:closeButton];
        
        for (UIView *view in self.navigationController.navigationBar.subviews) {        
            if ([[[view class] description] isEqualToString:@"UINavigationButton"]) {
                UINavigationButton *button = {(UINavigationButton *)view};
                [button setBackgroundImage:[UIImage imageNamed:@"bar_button.png"] forState:UIControlStateNormal];
                [button setBackgroundImage:[UIImage imageNamed:@"bar_button_black.png"] forState:UIControlStateSelected];
                [button setBackgroundImage:[UIImage imageNamed:@"bar_button_black.png"] forState:UIControlStateHighlighted];
        
            }
        }
        

        【讨论】:

        • UINavigationButton 是 UINavigationBar 的私有子类,不可访问。
        猜你喜欢
        • 2016-11-21
        • 1970-01-01
        • 2014-09-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-30
        • 2019-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多