UITableViewHeaderFooterView transparent
Je suis en train de faire un en-tête personnalisé vue pour cette UITableView
et j'aimerais qu'il soit transparent.
Mon code...
Interface...
typedef void(^ActionBlock)();
@interface MyViewHeaderView : UITableViewHeaderFooterView
@property (nonatomic, strong) UIImageView *flagImageView;
@property (nonatomic, strong) UILabel *leagueNameLabel;
@property (nonatomic, copy) ActionBlock tapAction;
@end
Mise en œuvre...
#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
Dans mon UITableViewDelegate
je suis de chargement l'en-tête comme...
- (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;
}
Cela fonctionne bien, l'en-tête est de montrer correctement. Juste sans transparence.
J'aimerais avoir une vue d'en-tête comme la norme de vue où vous pouvez voir la vue de la table de contenu défiler derrière elle.
S'il vous plaît pouvez-vous me faire savoir comment faire cela.
source d'informationauteur Fogmeister
Vous devez vous connecter pour publier un commentaire.
Veuillez pardonner mon incapacité à utiliser stackoverflow....
Voici comment j'ai réussi à le mettre en œuvre, à l'aide de ces deux UITableviewDelegate méthodes:
Espère que ça aide, m'a pris une éternité à comprendre. Il semble que le backgroundView n'est pas créé dans l'init de sorte que la couleur ne peut pas être remplacée.
Sur iOS 7, si vous ne voulez forcer un fond transparent sur la valeur par défaut de la section d'en-tête de la vue, voici ce que vous pouvez faire:
Il y a une façon où vous pouvez toujours utiliser votre personnalisé UITableViewHeaderFooterView et d'obtenir un arrière-plan clair et toujours à travailler sans "hack" et pas seulement lors du défilement de la table pour actualiser l'en-tête.
Juste ajouter un arrière-plan personnalisé de vue avec un arrière-plan clair 🙂 aussi facile que cela (testé sur iOS 7.1)
Mine est ce
Faire une vue qui a en arrière-plan transparent de la couleur et de l'affecter à la UITableViewHeaderFooterView de backgroundView propriété.
OK, à partir de @schukin sur Twitter.
J'ai changé
MyHeaderView
à la sous-classeUIView
et mettre de...puis en le délégué...
et maintenant cela fonctionne exactement comme je le veux.
Il semble
UITableViewHeaderFooterView
ne pouvez pas faire ce que je suis à la recherche d'.Merci à tous.
La façon la plus simple est:
Peut-être que ça aide...
Et pour le pied de page (avec un autre des cadres et de la taille de la police)...ajouter le même code dans
La solution d'autres ont fourni a été désapprouvée. C'est le message que j'ai reçu d'autres réponses.
"Réglage de la couleur d'arrière-plan sur UITableViewHeaderFooterView a été désapprouvée. Veuillez utiliser contentView.backgroundColor à la place."
Ma solution est la suivante. Espérons que cela aide quelqu'un. 🙂
La solution la plus simple est juste de définir la backgroundColor de la
cell.backgroundColor
et lacell.contentView.backgroundColor
Swift 2.*:
self.backgroundView?.backgroundColor = UIColor.clearColor()
self.contentView.backgroundColor = UIColor.clearColor()
NOTE:
N'oubliez pas le backgroundColor de la textLabels!
cell.textLabel?.backgroundColor = UIColor.clearColor()
Si vous êtes juste en utilisant footerview pour les espaces entre les sections, mais ne voulez pas faire un câlin à fond, c'est une solution beaucoup plus simple que aussi ne plaisante pas avec la déprécié footerView donc vous n'aurez pas à ces avertissements.
Que de les masquer.
Après le départ de l'Apple developer doc, comme c'description
j'ai essayé cette méthode, il fonctionne parfaitement pour moi