调整UIBarButtonItem的Imageview大小以使图像按比例缩小(iOS)

Kyl*_*han 11 uitoolbar uiimage uibarbuttonitem ios

我在我的UIToolbar中有一个按钮,我已经分配了一个图像,但我希望图像能够自动缩小(调整应用程序外部图像的尺寸会降低一些质量).

我在这里尝试了解决方案,它创建了一个自定义的imageView,然后将其分配给按钮.但是,图像似乎没有出现.这是我的代码:

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"info.png"]];
    imageView.frame = CGRectMake(0, 0, 35, 35);
    imageView.contentMode = UIViewContentModeScaleAspectFit;
    imageView.userInteractionEnabled = YES;
    UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:imageView];
    self.tutorial_lbl = barButtonItem;
Run Code Online (Sandbox Code Playgroud)

请注意,如果我注释掉最后两行并使用下面的行代替,则会出现图像但是它会丢失按钮的操作.

[self.tutorial_lbl setCustomView:imageView];
Run Code Online (Sandbox Code Playgroud)

rde*_*mar 11

我假设添加自定义视图与使用initWithCustomView时相同:创建条形按钮项.在那种情况下,文档说,

此方法创建的条形按钮项不会响应用户交互调用其目标的操作方法.相反,bar按钮项期望指定的自定义视图处理任何用户交互并提供适当的响应.

因此,您应该在图像视图中添加一个点击手势识别器,并为其设置一个操作方法,

- (void)viewDidLoad {
    [super viewDidLoad];
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];
    imageView.image = [UIImage imageNamed:@"info.png"];
    UITapGestureRecognizer *tapper = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(barButtonTapped:)];
    [imageView addGestureRecognizer:tapper];
    imageView.userInteractionEnabled = YES;
    [self.tutorial_lbl setCustomView:imageView];
}

-(void)barButtonTapped:(UITapGestureRecognizer *) sender {
    NSLog(@"Tapped");
}
Run Code Online (Sandbox Code Playgroud)