Question

J'ai un nstableview (basé sur la vue) qui crée une ligne;

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    TaskTableCellView *tableCellView = [[TaskTableCellView alloc] init];
    return tableCellView;
}

-(void) tableView:(NSTableView *)tableView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row {
    NSView *view = [rowView viewAtColumn:0];
    [view setTranslatesAutoresizingMaskIntoConstraints:NO];
    NSDictionary *views = NSDictionaryOfVariableBindings(view);
    [tableView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[view]|" options:0 metrics:nil views:views]];
    [tableView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[view]|" options:0 metrics:nil views:views]];
}

- (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row {
    return 20;
}

Cette ligne crée quelques sous-visions et attribue certaines contraintes;

- (void)layout {
    [super layout];
    ViewWithBackground *viewWithBackground = [[ViewWithBackground alloc] init];
    viewWithBackground.backgroundColor = [NSColor greenColor];
    [self addSubview:viewWithBackground];

    [viewWithBackground setTranslatesAutoresizingMaskIntoConstraints:NO];
    NSDictionary *views = NSDictionaryOfVariableBindings(viewWithBackground);
    [self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[viewWithBackground]|"
                                                                 options:0
                                                                 metrics:nil
                                                                   views:views]];
    [self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[viewWithBackground]|"
                                                                 options:0
                                                                 metrics:nil
                                                                   views:views]];

    [viewWithBackground setContentHuggingPriority:200 forOrientation:NSLayoutConstraintOrientationVertical];
    [viewWithBackground setContentHuggingPriority:200 forOrientation:NSLayoutConstraintOrientationHorizontal];
}


- (void)drawRect:(NSRect)dirtyRect {
    [[NSColor redColor] set];
    NSRectFill(dirtyRect);
    [super drawRect:dirtyRect];
}

Le plaisir commence quand j'essaie de modifier les contraintes. La viewwebackground est juste un nsview vide qui définit son arrière-plan.Quand la contrainte est | [Viewwewackground] |Pour les personnes horizontales et verticales, je reçois le résultat attendu - des rangées vertes.Quand je le change au plus fondamental | - [Viewwewackground] - |, je reçois un résultat résolument inattendu - des rangées rouges et aucun signe de ma vue verte!

Y a-t-il une étape supplémentaire que je suis censée prendre ici?Mon objectif est d'avoir ma vie-ci-même une vue légèrement plus petite, de simuler les «lacunes» entre rangées et l'espacement des bords de la vue de la table ..

Était-ce utile?

La solution

Si quiconque tonne jamais sur ceci. Il s'avère que NStablecellView est un peu bonsky sans taille min - ajoutant (>= 10) sur la contrainte verticale pris en charge le problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top