关于Objective C:NSTextField自定义背景,边框和角

NSTextField custom background, border and corners

我想用3张图片绘制自己的TextField。

  • input_l.png-输入的左侧
  • input_m.png-输入的中间部分-1像素宽-应该拉伸或乘以填充中间部分
  • input_r.png-右侧
  • 所有图像都包含边框,背景,阴影,仅是我需要用这些图片绘制的所有内容。

    但是我无法使用NSTextField的子类和以下方法来绘制它:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    - (void)awakeFromNib
    {
        [self setDrawsBackground:NO];
    }

    - (void)drawRect:(NSRect)rect
    {
        NSDrawThreePartImage(rect, [NSImage imageNamed:@"input_l.png"], [NSImage imageNamed:@"input_m.png"], [NSImage imageNamed:@"input_r.png"], NO, NSCompositeSourceOut, 1.0, NO);

        [super drawRect:rect];
    }

    它绘制带有文本/占位符的黑色背景。

    应该是这样的:
    http://d.pr/i/VLEN

    如果还有其他方法,更好的方法是绘制它,请告诉我:)我突然想到我可以使用1px宽的背景图像(没有边框)来绘制此图形,并在代码中使圆角变圆并以某种方式绘制均匀的边框。但是,我仍然想知道如何以尝试的方式进行操作,以备将来使用。


    可以有很多方法可以做:

    子类NSButton,如果需要,还子类NSButtonCell并覆盖这些方法

  • -(void)drawRect:(NSRect)rect {

    } ??

  • drawText:withFrame:inView:

  • drawImage:withFrame:inView:。