2012-11-16 43 views
2

我想用3张图片绘制自己的TextField。NSTextField自定义背景,边框和边角

  1. input_l.png - 输入的中间部分 - - 1px的宽 - 应该伸展或乘以填充中间部分
  2. input_r.png - 右侧
  3. 输入
  4. input_m.png的左侧

所有图像都包含边框,背景,阴影,只需要用这些图片绘制它就可以了。

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

+0

所以我试图画[NSBezierPath bezierPathWithRoundedRect:xRadius:yRadius]的边框,它看起来有点丑。它像一个像素化。 –

回答

1

可以有很多方法可以做到:

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

  1. - (空)的drawRect:(的NSRect)RECT {

    }

  2. 参考文档:withFrame:inView:

  3. drawImage:withFrame:inView :.

+0

我想用自定义样式绘制NSTextField。 –

+0

所以我终于设法正确地绘制背景。现在我该如何绘画或以某种方式将文字向下移动,并且有点正确? –

+0

检查水平和垂直对齐。 http://stackoverflow.com/questions/1759054/nstextfieldcell-vertical-alignment-solutions-seem-to-squash-the-horizo​​ntal-alig –