19

私は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];  

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

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

4

4 に答える 4

13

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

これについては、Daniel Jalkut による素晴らしいブログ投稿があります。ダウンロード可能なバージョンも用意されています。投稿はかなり古いですが、それでも問題なく動作するはずです。

于 2012-04-18T08:11:34.030 に答える
1

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

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

于 2012-04-18T08:04:59.353 に答える
-1

ViewWillDraw をオーバーライドし、この時点で NSTextField をその親ビューの中央に配置します。これは、ライブのサイズ変更でも機能します。この時点でフォント サイズを調整して、新しいサイズに適合するフォントを見つけることもできます。

于 2015-10-16T22:35:32.977 に答える