NSTextField como barra de endereço do safari

8

Qual é a melhor maneira de criar um campo de endereço como o do safári?

Precisa ter texto editável e determinar o histórico do indicador de progresso.

    
por Arlen Anderson 13.01.2011 в 04:39
fonte

1 resposta

4

Você poderia apenas subclassificar NSTextField e substituir o método -drawRect: para "preencher" a porcentagem apropriada de toda a largura com alguma cor ou gradiente (ou qualquer outro) para o progresso. Se estou entendendo sua pergunta corretamente.

-(void)drawRect:(NSRect)dirtyRect {
    CGFloat progress = 0.33;

    NSRect progressRect = [self bounds];
    progressRect.size.width *= progress;

    [[NSColor colorWithCalibratedRed:0.0 green:0.0 blue:1.0 alpha:0.4] set];
    NSRectFillUsingOperation(progressRect, NSCompositeSourceOver);

    [super drawRect:dirtyRect];
}

Obviamente, "progresso" viria de uma propriedade declarada e atualizada de acordo com o modelo. Você precisa garantir que setDrawsBackground: esteja desativado ou que o plano de fundo esteja definido como [NSColor clearColor]; para que seu desenho personalizado seja visto.

Esta é uma foto do código acima.

    
por d11wtq 13.01.2011 / 15:16
fonte