web-dev-qa-db-ja.com

NSTextField垂直方向の配置

私はこのようにプログラムでNSTextFieldを作成したココアアプリを作成しています。

NSView *superView = [[NSView alloc] initWithFrame:NSMakeRect(0, 300, 1400, 500)];
NSTextField *myTextField = [[NSTextField alloc] initWithFrame:NSMakeRect(180, 100, 1000, 300)];
[myTextField setStringValue:myText];
[myTextField setEditable:NO];
[myTextField setBezeled:NO];
[myTextField setDrawsBackground:NO];
[myTextField setSelectable:NO];
[myTextField setFont:[NSFont fontWithName:@"Futura" size:22]];
[superView addSubview:myTextField];
[superView setAutoresizesSubviews:YES];
[myTextField setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
[self.window.contentView addSubview:superView];  

今、私は私のテキストの垂直方向の配置が必要であり、それはテキストの長さに従って調整可能でなければなりません。
誰か提案がありますか?あなたの提案を共有してください:)

どうもありがとう..!!

19
iUser

必要なことは可能ですが、NSTextFieldCellのサブクラスを作成してから、そのサブクラスをNSTextFieldで使用する必要があります。オーバーライドする主要なメソッドはdrawingRectForBounds:selectWithFrame:、およびeditWithFrame:

これは素晴らしいDaniel Jalkutからのブログ投稿です これについて、彼はすぐに使えるダウンロード可能なバージョンも含んでいます。投稿はかなり古いですが、それでも問題なく動作するはずです。

12
sosborn

テキストフィールドを文字列サイズに調整するには、フレームを設定してテキストフィールドのサイズを調整する前に、NSStringsizeWithFont: constrainedToSize: lineBreakMode:を使用してテキストサイズを計算する必要があります。

垂直方向の配置については、これを見てください 質問 (および回答)。

1
Kai Huppmann