2011-06-19 7 views
2
m_LayoutManager = [[NSLayoutManager alloc] init]; 
m_TextContainer = [[NSTextContainer alloc] init]; 
m_TextStorage = [[NSTextStorage alloc] initWithString: @"Here's to the crazy ones, the misfits, the rebels, the troublemakers, the round pegs in the square holes, the ones who see things differently."]; 
[m_LayoutManager addTextContainer: m_TextContainer]; 
[m_TextStorage addLayoutManager: m_LayoutManager]; 
[m_TextContainer release]; 
[m_LayoutManager release]; 
[m_TextStorage replaceCharactersInRange:NSMakeRange(0, [m_TextStorage length]) withString: XMajor]; 
[m_TextContainer setContainerSize: NSMakeSize(75,50)]; 

NSRange glyphRange = [m_LayoutManager glyphRangeForTextContainer: m_TextContainer]; 
NSRect usedRect = [m_LayoutManager usedRectForTextContainer: m_TextContainer]; 

[[NSColor brownColor] setFill]; 
//NSRectFill(NSMakeRect(j - usedRect.size.width/2,y0 - 50 - 5,50,50)); 

[m_LayoutManager drawGlyphsForGlyphRange:glyphRange 
           atPoint: NSMakePoint(j - usedRect.size.width/2,y0 - 50 - 5)]; 

私が見ているのは、長方形の底から始まり上に上がるテキストです。NSLayoutManagerテキスト新しい行が矩形の一番下から始まり、上に行くようです。

 
ferently. 
the ones who see things dif 
nd pegs in the square holes, 
the troublemakers, the rou 
the misfits, the rebels, 
Here's to the crazy ones, 

は、私は、テキストが上から開始し、下に行きたいと私も今、それは上の単語の途中を開始します、ワードラップにテキストをしたい:私はビューでそれを描くときには、このようになります新しい行。 NSLayoutManagerNSParagraphStyleNSTypeSetterについて読んでいますが、この問題を解決する方法がわかりません。

答えて

2

isFlippedをオーバーライドしてNSViewのサブクラスでYESを返します。

+0

尻に痛みがあり、チャートのコード全体をその修正で書き直す必要がありましたが、機能しました!ありがとう。私は決してそれを考えなかったでしょう。 – user805547

+0

私は 'NSView'なしで(CGContextRef'と' -graphicsContextWithGraphicsPort:flipped: ')これを行いました。この場合は、反転させてYESにしてから、それを再び反転させて 'NSAffineTransform'を使用します。 –

関連する問題