我有一个tableview,每行有4张图片。我已经实现了一个共享选项,允许用户选择多个图像。如何添加叠加或某种视觉效果以显示图像已被选中?
我想添加一些叠加来显示图像被选中,但如果不为每个缩略图添加一组新的子视图,这将如何完成?一旦完成,将如何将新视图的选择链接回它们后面的图像,以便将它们添加到数组中?
或者有更简单的方法吗?
由于
答案 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