我在我的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;

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

[self.tutorial_lbl setCustomView:imageView];

===============>>#1 票数:10 已采纳

我假设添加自定义视图与使用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");
}

===============>>#2 票数:2

您可以尝试做的一件事是设置图像插入。 UIButtonUIBarButtonItem支持图像插入。 您不需要为此添加UIImageView 只需在按钮上设置图像,然后设置图像插入。

myButton.imageEdgeInsets = UIEdgeInsetsMake(TOP, LEFT, BOTTOM, RIGHT);//UIButton

myBarButtonItem.imageInsets = UIEdgeInsetsMake(TOP, LEFT, BOTTOM, RIGHT);//UIBarButtonItem

这会调整按钮上的图像大小。 正值将减小尺寸,而负值将放大图像。

===============>>#3 票数:1

通过执行以下操作,我能够实现此目的:

let originalImage = UIImage(named: "SearchIcon")
let scaledIcon = UIImage(CGImage: originalImage!.CGImage!, scale: 5, orientation: originalImage!.imageOrientation)
let rightButton = UIBarButtonItem(image: scaledIcon, style: .Plain, target: self, action: #selector(MeViewController.showSearchUsers))

  ask by Kyle Bachan translate from so

未解决问题?本站智能推荐: