0

UIViewController を拡張する GUI クラスがあります。

その機能viewDidLoadには、UITextFieldインスタンスが必要です。そのインスタンスを単純な CGRect として配置せず、オフセットと幅と高さを設定したいのですが、動的にサイズ変更して、画面の幅全体を埋め、上、左、およびそれぞれ右で、高さは 20px です。それはどのように行われますか?

デバイスの向きに関係なく、「相対的に絶対的な」位置を維持する必要があり、すべての向きがサポートされています。

たとえば、Java の GridBagLayout のように、LayoutManager のようなものがあるのではないでしょうか。

4

3 に答える 3

2

autoresizingMaskビューのプロパティを設定します。

UIView *theParentView; // Assume this is the root view that owns the whole screen

CGRect textFieldFrame = CGRectMake(5, // Top-left corner x position
                                   5, // Top-left corner y position
                                   [theParentView bounds].width - 10, // Width
                                   20); // Height

UIView *myView = [[UIView alloc] initWithFrame:textFieldFrame];

// This will make it resize with the parent view, maintaining margins
[myView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];

[theParentView addSubview:myView];

[myView release];

これはすべて、Interface Builder からも実行できます。Interface Builder でビューのサイズがどのように変更されるかを示す小さなアニメーションもあります。

于 2011-06-03T19:52:37.617 に答える
1

UIViewController 自体は表示されませんが、ビュー オブジェクトの階層を管理することに注意してください。-viewDidLoad でテキスト フィールドを作成できますが、それを表示するには、View Controller のビューに追加する必要があります。次のようにします。

CGFloat inset = 5.0;
CGFloat fieldHeight = 20.0;
CGRect fieldRect = CGRectMake(inset,
                              inset,
                              self.view.size.width - (2 * inset),
                              fieldHeight);
UITextField *field = [[UITextField alloc] initWithFrame:fieldRect];
field.autoResizingMask = UIViewAutoresizingFlexibleWidth;
[self.view addSubview:field];
[field release];

もちろん、後でそのフィールドを再度参照する必要がある場合は、そのフィールドへのポインターをプロパティまたは ivar に隠しておくこともできます。

于 2011-06-03T19:53:18.227 に答える
-1

OSに組み込まれているものは何もありません。あなたが求めているようなもののいくつかのバージョンを見てきました。これには、GitHubにある私自身のものも含まれます

于 2011-06-03T19:52:34.917 に答える