【问题标题】:How to get backBarButtonItem width?如何获得 backBarButtonItem 的宽度?
【发布时间】:2024-01-17 16:54:01
【问题描述】:

我尝试获取 backBarButtonItem 宽度:

UIBarButtonItem *leftBtn = self.navigationItem.backBarButtonItem;
UIView *view = [leftBtn valueForKey:@"view"];
CGFloat width;
if(view){
    width=view.frame.size.width;
}
NSLog(@"width %f", width);

但在控制台中:width 0.000000

任何想法我可能做错了什么?使用self.navigationItem.rightBarButtonItem 就可以了。

【问题讨论】:

  • 您是否为 backBarButtonItem 分配了自定义视图?
  • 没有。我使用 UINavigationController 中的默认 backButton

标签: ios objective-c uikit


【解决方案1】:
UIButton *addButton = [UIButton buttonWithType:UIButtonTypeCustom];
    CALayer *btnLayer = [addButton layer];
        [btnLayer setMasksToBounds:YES];
        [btnLayer setCornerRadius:1.0f];
    [addButton setFrame:CGRectMake(0, 0, 45, 30)];
    [addButton setBackgroundColor:[UIColor orangeColor]];
    [addButton setTitle:@"Title" forState:UIControlStateNormal];
    addButton.titleLabel.font = [UIFont systemFontOfSize:14.0];
    [addButton addTarget:self action:@selector(Onclickevent:) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:addButton];
    [self.navigationItem setRightBarButtonItem:barButtonItem];

【讨论】:

  • 我知道如何添加自定义按钮。我现在不知道如何从默认的 backButton 获取 frame.size.width
  • 问题是询问后栏按钮项的宽度。