BarButtonItem因未知原因调整大小

时间:2012-10-25 16:32:57

标签: objective-c ios uibarbuttonitem

我有一个按钮>

初始化
self.button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone 
                                                            target:self 
                                                            action:@selector(doAction)];

稍后,我正在附加自定义背景,例如>

    [self.button  setBackgroundImage:[UIImage imageNamed:@"customNavBar_button_right_enabled"] 
                            forState:UIControlStateNormal 
                          barMetrics:UIBarMetricsDefault];

并将其放在导航栏上。

   [self.navigationItem setRightBarButtonItem:self.button 
                                     animated:NO];

此图片尺寸固定。我希望该按钮具有完全自定义的背景图像,而无需使用UIEdgeInsets进行“智能”调整。我不希望任何调整大小。但由于某种原因,它的行为类似于它的插图将是活动的并且它被调整为具有更大的宽度,大致中间的一半图片被拉伸以提供更宽的按钮。

为什么会这样?我怎样才能防止这种情况发生?

1 个答案:

答案 0 :(得分:1)

使用自定义图像实现条形按钮项目的最简单方法是:

  1. 将UIButton拖到故事板上。
  2. 将按钮类型设置为自定义,并为该按钮设置图像。
  3. 将按钮拖到工具栏上。
  4. 故事板会自动创建一个UIBarButtonItem并将您的UIButton添加为子视图。或者,如果您不想使用故事板,则可以实现以下内容:

    // Initialize the UIButton
    UIImage *buttonImage = [UIImage imageNamed:@"buttonImage.png"];
    UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [aButton setImage:buttonImage forState:UIControlStateNormal];
    aButton.frame = CGRectMake(0.0, 0.0, buttonImage.size.width, buttonImage.size.height);
    
    // Initialize the UIBarButtonItem
    UIBarButtonItem aBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:aButton];
    
    // Set the Target and Action for aButton
    [aButton addTarget:self action:@selector(aButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
    

    希望它有所帮助!

    编辑:不要忘记将aBarButtonItem添加到UIToolbar。