2011-05-07 141 views
4

我發現NSTextView內部文本容器非常有趣的行爲。當我設置容器的大小,使其小於NSTextView框架的大小,並嘗試在NSTextView drawRect中繪製任何圖形(如線條,矩形)時,我的所有圖形都被裁剪爲文本容器的大小。NSTextView和NSTextContainer大小和剪輯區域

因此,NSTextView的幀大小「允許」我使用它進行繪製,但似乎僅限於容器大小。

如果有可能在文本視圖中繪製文本容器而不是文本容器?

代碼在自定義NSTextView - (空)的drawRect:

[super drawRect:dirtyRect]; 

NSBezierPath* aPath = [NSBezierPath bezierPath]; 
[aPath moveToPoint:NSMakePoint(100, 100)]; 
[aPath lineToPoint:NSMakePoint(500, 100)]; 
[aPath stroke]; 

自定義TextView的調整策略集,所以它在容器中的所有尺寸調整大小。這是自定義代碼NSTextView

- (void) setFrameSize:(NSSize)newSize { 

    [super setFrameSize:newSize]; 

    NSTextContainer *container = [self textContainer]; 
    newSize.width -= 200; 
    [container setContainerSize:newSize]; 
} 
+1

你能編輯你的問題和粘貼代碼,您: a)更改容器的大小,b)繪製數字? – 2011-05-07 09:11:26

+0

感謝您的評論,更新代碼示例。 – dmitrynikolaev 2011-05-08 10:16:04

回答

2

感謝羅斯·卡特的意見:

嘗試包裹這樣調用超:

[NSGraphicsContext saveGraphicsState]; 
[super drawRect:rect]; 
[NSGraphicsContext restoreGraphicsState];