objective-ccocoacolorsnstextfield

Can I change the border color of an NSTextField?


I want to change the border color of NSTextField object, but I can't achieve it.

I already have tried many solutions EX: be subclass, draw background.

Is there anyone who can resolve this issue?


Solution

  • Use NSBezierPath

    - (void)drawRect:(NSRect)dirtyRect
    {
        NSPoint origin = { 0.0,0.0 };
        NSRect rect;
        rect.origin = origin;
        rect.size.width  = [self bounds].size.width;
        rect.size.height = [self bounds].size.height;
    
        NSBezierPath * path;
        path = [NSBezierPath bezierPathWithRect:rect];
        [path setLineWidth:2];
        [[NSColor colorWithCalibratedWhite:1.0 alpha:0.394] set];
        [path fill];
        [[NSColor redColor] set]; 
        [path stroke];
    
        if (([[self window] firstResponder] == [self currentEditor]) && [NSApp isActive])
        {   
            [NSGraphicsContext saveGraphicsState];
            NSSetFocusRingStyle(NSFocusRingOnly);
            [path fill]; 
            [NSGraphicsContext restoreGraphicsState];
        }
        else
        {
            [[self attributedStringValue] drawInRect:rect];
        }
    }
    

    Output:

    enter image description here

    enter image description here