过去我做过以下事情:
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
的情况下这样做。这可能吗?
答案 0 :(得分:3)
这应该有效。然而,它可能不是您正在寻找的确切方法。
它涉及转换UIView in UIImage。
+ (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];
这可能无法满足你所期望的表现,但它应该有效。
答案 1 :(得分: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
这样您就不必在按钮上添加任何视图