1

在过去,我做了以下事情:

thumbnailButton = [[UIButton alloc] initWithFrame: thumbnailButtonFrame];
[thumbnailButton addTarget:self action:@selector(thumbnailButtonPushed:) forControlEvents:UIControlEventTouchUpInside];
[thumbnailButton setBackgroundImage: thumbnailButtonImage forState: UIControlStateNormal];
[thumbnailButtonImage release];

它创建了一个按钮,上面有一个缩略图,当你按下它时,它会在上面加一个灰色的突出显示(就像你从缩略图列表中选择要显示的照片时在照片应用程序中一样)。

我现在有一个场景,我有一个在它的方法UIView中绘制图形的类。drawRect如果我添加图像,我想把它放在UIView上面UIButton并以相同的方式突出显示。我想在没有子类化的情况下做到这一点UIButton。这可能吗?

4

2 回答 2

3

这应该有效。但是,它可能不是您正在寻找的确切方法。

它涉及转换UIImage 中的 UIView

+ (UIImage *) imageWithView:(UIView *)view
{
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return img;
}

然后只需在您的代码中调用此方法。

[thumbnailButton setBackgroundImage:[MyClass imageWithView:myCustomView] forState: UIControlStateNormal];

这可能无法为您提供所需的性能,但它应该可以工作。

于 2012-10-12T08:42:05.853 回答
0

您可以尝试这种方法。您可以有两张图像,一张用于正常状态,一张用于突出显示状态。

btnImage = [UIImage imageNamed:@"buttonInactiveImage.png"];
btnImageSelected = [UIImage imageNamed:@"buttonActiveImage.png"];
btn = [[UIButton alloc] initWithFrame: thumbnailButtonFrame];
btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setBackgroundImage:btnImage forState:UIControlStateNormal]; // Set the image for the normal state of the button
[btn setBackgroundImage:btnImageSelected forState:UIControlStateSelected]; // Set the image for the selected state of the button

这样您就不必在按钮上放置任何视图

于 2012-10-12T08:53:16.217 回答