加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iphone – UIButton作为UINavigationbar按钮

发布时间:2020-12-14 19:59:05 所属栏目:百科 来源:网络整理
导读:我有一个Tab栏应用程序.在其中一个标签栏中,我有一个导航控制器. 我试图设置一个UIButton与图像作为导航栏的右键. UIButton *refreshButton = [[UIButton alloc] init]; [refreshButton setImage:[UIImage imageNamed:@"refresh_icon.png"] forState:UIContr
我有一个Tab栏应用程序.在其中一个标签栏中,我有一个导航控制器.
我试图设置一个UIButton与图像作为导航栏的右键.

UIButton *refreshButton = [[UIButton alloc] init];
    [refreshButton setImage:[UIImage imageNamed:@"refresh_icon.png"] forState:UIControlStateNormal];
    [refreshButton addTarget:self action:@selector(refreshSection) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithCustomView:refreshButton];
    //[rightButton setImage:[UIImage imageNamed:@"refresh_icon.png"]]; << DOESN'T WORK EITHER  
    self.navigationItem.rightBarButtonItem = rightButton;
    [refreshButton release];
    [rightButton release];

但图像没有显示出来.我得到一个隐形按钮.

编辑:
我希望按钮样??式为普通或背景为透明,以便只显示图像.因此我使用UI按钮而不是直接使用UIBarButton.

解决方法

您不必创建UIButton并将其用作UIBarButtonItem中的自定义视图.您可以直接使用图像创建UIBarButtonItem:

UIImage *myImage = [UIImage imageNamed:@"myImage.png"];
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage:myImage style:UIBarButtonItemStyleBordered target:self action:@selector(refreshSection)];  
self.navigationItem.rightBarButtonItem = button;    
[button release];

根据评论更新

在UIBarButtonItem中使用UIImageView作为自定义视图:

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myImage.png"]];
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithCustomView:imageView];
self.navigationItem.rightBarButtonItem = rightButton;
[imageView release];
[rightButton release];

更新

尝试了最后一种方法,虽然这看起来像你想要它,我似乎无法让它来处理水龙头.虽然目标和行动已经确定.

最后更新

我已经在问题中获得了您的初始代码&运行.图像未显示的原因是因为您尚未设置按钮的框架.设置框架后,图像将显示在导航栏中.

这是我使用过的片段&测试:

UIImage *myImage = [UIImage imageNamed:@"paw.png"];
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[myButton setImage:myImage forState:UIControlStateNormal];
myButton.showsTouchWhenHighlighted = YES;
myButton.frame = CGRectMake(0.0,0.0,myImage.size.width,myImage.size.height);

[myButton addTarget:self action:@selector(tapped:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithCustomView:myButton];
self.navigationItem.rightBarButtonItem = rightButton;

[rightButton release];
[myButton release];

注意:我已经设置了UIButton的showsTouchWhenHighlighted属性,以便在按下按钮时可视地高亮显示该按钮.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读