将叠加层添加到网格tableView

时间:2011-02-19 17:10:12

标签: iphone

我有一个tableview,每行有4张图片。我已经实现了一个共享选项,允许用户选择多个图像。如何添加叠加或某种视觉效果以显示图像已被选中?

enter image description here

我想添加一些叠加来显示图像被选中,但如果不为每个缩略图添加一组新的子视图,这将如何完成?一旦完成,将如何将新视图的选择链接回它们后面的图像,以便将它们添加到数组中?

或者有更简单的方法吗?

由于

1 个答案:

答案 0 :(得分:2)

根据您实施此网格视图的方式,跟踪该级别的所有选择和取消选择可能是有意义的。

对于叠加层,快速而脏的方法是子类UIImageView,添加一个名为selected的BOOL属性。然后,您可以覆盖selected的设置器并处理显示或隐藏叠加视图。

这是我如何设置我的子类。首先是界面:

@interface SelectableImageView : UIImageView

@property (nonatomic, assign, getter = isSelected) BOOL selected;

@end

和实施......

@interface SelectableImageView ()

@property (nonatomic, retain) UIView *overlayView;

@end



@implementation SelectableImageView

@synthesize selected;
@synthesize overlayView;

- (id)initWithFrame:(CGRect)frame
{    
    if (self = [super initWithFrame:frame])
    {
        overlayView = [[UIView alloc] initWithFrame:frame];
        overlayView.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.75];
        overlayView.hidden = YES;
        [self addSubview:overlayView];
    }

    return self;
}

- (void)setSelected:(BOOL)flag
{
    selected = flag;
    self.overlayView.hidden = !flag;
}

- (void)dealloc
{
    [overlayView release], self.overlayView = nil;
    [super dealloc];
}

@end