繁体   English   中英

将图像添加到导航栏

[英]Add an image to a navigation bar

我想更改navigationBar中backButton的图像 ,标题和颜色。 这里的代码:

UIButton* backButton = (UIButton *) [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BackButtonTopBar.png"]];
UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = backButtonItem;

self.navigationController.navigationBar.tintColor = [UIColor blackColor]; 

UIImage *image = [UIImage imageNamed: @"TopBar.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage: image];
self.navigationItem.titleView = imageView;

但我有一些问题:

  1. 黑色不指向
  2. 背面图像不起作用

有人可以帮我吗? 谢谢。

UIButton * backButton = [UIButton buttonWithType:101];

[backButton setBackgroundImage:[UIImage imageNamed:BACK_BUTTON_IMAGE_NORMAL] forState:UIControlStateNormal];

    [backButton setBackgroundImage:[UIImage imageNamed:BACK_BUTTON_PRESSED] forState:UIControlStateHighlighted];
    UIView * backButtonView = [[UIView alloc] initWithFrame:CGRectMake(BACK_BUTTON_FRAME)];

    [backButton addTarget:self action:@selector(backButtonPressed) forControlEvents:UIControlEventTouchUpInside];    

    [backButtonView addSubview:backButton];

    UIBarButtonItem * backBarButton = [[UIBarButtonItem alloc] initWithCustomView:backButtonView];
    self.navigationItem.leftBarButtonItem = backBarButton;

[backButtonView release];

[backBarButton release];

这行代码是什么意思?

UIButton* backButton = (UIButton *) [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BackButtonTopBar.png"]];

如果需要创建按钮,则必须执行以下操作。

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

然后将其设置为背景图像。

但是我更喜欢的方法是为UIBarButtonItem创建类别扩展,如下所示

//UIBarButtonItem+YourPreferredName.h    
+ (UIBarButtonItem*)barItemWithImage:(UIImage*)image title:(NSString*)title target:(id)target action:(SEL)action;

//UIBarButtonItem+YourPreferredName.m    
+ (UIBarButtonItem*)barItemWithImage:(UIImage*)image title:(NSString*)title target:(id)target action:(SEL)action
{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(0.0, 0.0, image.size.width, image.size.height);
    button.titleLabel.textAlignment = UITextAlignmentCenter;

    [button setBackgroundImage:image forState:UIControlStateNormal];
    [button setTitle:title forState:UIControlStateNormal];
    [button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];

    // additional customizations here...

    UIBarButtonItem* barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];

    return [barButtonItem autorelease];    
}

如果在需要的位置导入UIBarButtonItem+YourPreferredName.h ,则可以用作以下内容:

UIBarButtonItem* backBarButtonItem = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"YoutImageName"] title:@"YourTitle" target:self action:@selector(goBack:)];

其中goBack可能是以下内容:

- (void)goBack:(id)sender
{
   // do stuff here
}

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM