我的UIToolbar中有一个按钮,我已经分配了一个图像,但我希望图像能够自动缩小(调整应用程序外部的图像会降低其部分质量)
我尝试了创建自定义imageView的解决方案here,然后将其分配给按钮。但是,图像似乎并没有出现。这是我的代码:
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];
答案 0 :(得分: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");
}
答案 1 :(得分:2)
您可以尝试做的一件事是设置图像插入。 UIButton
和UIBarButtonItem
都支持图片插入。您无需为此添加UIImageView
。只需在按钮上设置图像,然后设置图像插入。
myButton.imageEdgeInsets = UIEdgeInsetsMake(TOP, LEFT, BOTTOM, RIGHT);//UIButton
myBarButtonItem.imageInsets = UIEdgeInsetsMake(TOP, LEFT, BOTTOM, RIGHT);//UIBarButtonItem
这会调整按钮上的图像大小。正值会减小尺寸,而负值会放大图像。
答案 2 :(得分: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))