将 UIImageView 添加到 UIButton

Posted

技术标签:

【中文标题】将 UIImageView 添加到 UIButton【英文标题】:Adding a UIImageView to UIButton 【发布时间】:2012-11-05 15:51:29 【问题描述】:

我创建了一个包含多个 UIImageView 实例的 UIScrollView。 SDWebImage 框架用于缓存图像并将它们呈现在 UIImageView 实例中。现在我希望能够点击这些 UIImageView 实例。

之前我将 UIButtons 添加到 UIScrollView 并在此按钮中添加了图像。但知道我无法将 UIImageView 添加到按钮。我应该如何解决这个问题?是否可以在此视图上放置 UIButton?我该怎么做?

我之前使用它来添加可点击的图像(我需要更改它,由于 SDWebImage 框架,所以我不能使用 UIImage imageNamed:forState

        CGFloat y = i * self.view.frame.size.height/6; 
        UIButton* aButton = [UIButton buttonWithType:UIButtonTypeCustom];
        [aButton setTag:[[idsCol objectAtIndex: i] intValue]];
        aButton.frame = CGRectMake(0, y, self.view.frame.size.width/3, self.view.frame.size.height/6);

        aButton.imageView.contentMode = UIViewContentModeScaleAspectFit;

        [aButton setImage:[UIImage imageNamed:@"image.jpg" forState:UIControlStateNormal];

        [aButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
        aButton.adjustsImageWhenHighlighted = NO;
        [scrollView addSubview:aButton];

我目前需要使以下图像视图可点击:

[testImageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
               placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

【问题讨论】:

SDWebImage 也有一个用于 UIButtons 的类别 - 我只是使用它来代替。 【参考方案1】:

我不熟悉SDWebImage,但如果这个框架允许你直接修改按钮的 imageView 属性,你会更好:

[myButton.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

或者,如果您想坚持使用图像视图,可以通过向其添加简单的点击手势使其“可点击”:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myMethod:)];
[tap setNumberOfTapsRequired:1];
[tap setNumberOfTouchesRequired:1];
[testImageView setUserInteractionEnabled:YES];
[testImageView addGestureRecognizer:tap];




- (void)myMethod:(UIGestureRecognizer *)sender

    NSLog(@"%u",sender.view.tag);

【讨论】:

感谢您的建议!我首先尝试按照建议修改 imageView 属性。不幸的是,这不起作用!我尝试了第二个并创建了一个水龙头识别器(使用上面的代码)。 imageview 确实处理了一个点击,但该操作被发送到选择器 buttonClicked:。此操作用于查看单击按钮的标记。 (我曾经设置 [buttonName setTag:tagId])但我无法向手势识别器添加标签。知道我能做什么吗? @AlexvanRijs 查看我对帖子所做的更改。请原谅任何轻微的错误,我是在 iPad 上写的。

以上是关于将 UIImageView 添加到 UIButton的主要内容,如果未能解决你的问题,请参考以下文章

将 UIImageView 添加到 UITableViewCell?

如何将 UIImageView 添加到导航栏的右侧?

将 UITapRecognizerController 添加到 UIImageView

将 UILabel 添加到 CellForRow 中的 UIImageView

将 UIImageView 添加到单元格边界之外的 UITableViewCell

将 UIImageView 动态添加到 UIScrollview 中,但它不能自动调整大小