我想为这个UITableView制作一个自定义标题视图,我希望它是透明的.
我的代码…
接口…
typedef void(^ActionBlock)(); @interface MyViewHeaderView : UITableViewHeaderFooterView @property (nonatomic,strong) UIImageView *flagImageView; @property (nonatomic,strong) UILabel *leagueNameLabel; @property (nonatomic,copy) ActionBlock tapAction; @end
实现…
#import "MyViewHeaderView.h" @interface MyViewHeaderView () @end @implementation MyViewHeaderView - (id)initWithReuseIdentifier:(NSString *)reuseIdentifier { self = [super initWithReuseIdentifier:reuseIdentifier]; if (self) { // Add customisation here... // I have tried everything here... self.tintColor = [UIColor colorWithWhite:0.961 alpha:1.0]; self.alpha = 0.5; // self.contentView.backgroundColor = [UIColor colorWithWhite:0.5 alpha:0.5]; // self.backgroundColor = [UIColor colorWithWhite:0.5 alpha:0.5]; // can't remember what else. // none of it makes it transparent. It sets the colour against // a white background. i.e. 50% transparent but with a white opaque background. // so I can't see the content of the table scrolling behind it. self.flagImageView = [[UIImageView alloc] init]; self.flagImageView.image = [UIImage imageNamed:@"placeholder_flag"]; [self.flagImageView setTranslatesAutoresizingMaskIntoConstraints:NO]; [self.contentView addSubview:self.flagImageView]; self.leagueNameLabel = [[UILabel alloc] init]; [self.leagueNameLabel setTranslatesAutoresizingMaskIntoConstraints:NO]; [self.contentView addSubview:self.leagueNameLabel]; UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped)]; tapGestureRecognizer.numberOfTapsrequired = 1; tapGestureRecognizer.numberOfTouchesrequired = 1; [self.contentView addGestureRecognizer:tapGestureRecognizer]; [self setupConstraints]; } return self; } - (void)setupConstraints { // adding constraints... } - (void)viewTapped { self.tapAction(); } @end
在我的UITableViewDelegate我正在加载头像…
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { MyViewHeaderView *headerView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:@"HeaderView"]; League *league = self.leagues[(NSUInteger) section]; headerView.leagueNameLabel.text = league.name; headerView.tapAction = ^(){ [self leagueTapped:league]; }; return headerView; }
我想要一个标题视图,如标准视图,您可以在其中查看在其后面滚动的表视图内容.
请你让我知道如何做到这一点.
解决方法
请原谅我无法使用stackoverflow ….
这是我如何设法实现它,使用这两个这些UITableviewDelegate方法:
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section { if ([view isMemberOfClass:[UITableViewHeaderFooterView class]]) { ((UITableViewHeaderFooterView *)view).backgroundView.backgroundColor = [UIColor clearColor]; } } - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UITableViewHeaderFooterView *FeedHeaderView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:@"HeaderIdentifier"]; //Other customizations return FeedHeaderView; }
希望有帮助,让我永远弄清楚.似乎backgroundView不是在init中创建的,所以颜色不能被覆盖在那里.