NSTextField自定义背景,边框和角落

时间:2012-11-16 23:26:21

标签: objective-c macos cocoa

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

  1. input_l.png - 输入的左侧
  2. input_m.png - 输入的中间部分 - 1px宽 - 应该拉伸或相乘以填充中间部分
  3. input_r.png - 右侧
  4. 所有图片都包含边框,背景,阴影,只需要用这些图片绘制所需的一切。

    但我无法用NSTextField的子类和这些方法绘制它:

    - (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宽的背景图像无边框绘制这个和在代码中使角落圆角,并以某种方式绘制甚至边框。但是我仍然想知道如何按照我尝试的方式进行操作,以备将来使用。

1 个答案:

答案 0 :(得分:1)

可以有很多方法:

子类NSButton并且如果需要也是子类NSButtonCell并覆盖这些方法

  1. - (void)drawRect:(NSRect)rect {

    }

  2. drawText:withFrame:inView:

  3. 的drawImage:withFrame:inView: