2012-11-16 74 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 –