4

私は非常に単純なことをするのに多くの問題を抱えています。私はviewControllerとsubViewControllerを持っており、どちらもペン先からロードされたビューを持っています。明確にするために、親ビューのサイズは1024 x 748で、ペン先のサブビューのサイズは640x480です。

viewControllerのviewDidLoadに、次のようにsubViewControllerのビューを追加します。

[self.view addSubview:self.subViewController.view];
NSLog(@"subview.frame:%@",NSStringFromCGRect(self.subViewController.view.frame));

ログ出力:

subview.frame:{{0, 0}, {640, 480}}

次に、テストするために、setCenterを使用して、親ビュー内のサブビューを次のように同じ位置に再配置しようとします。

CGPoint newCenter = CGPointMake(0,0);  //should stay at the same position..
[self.subViewController.view setCenter:newCenter];
NSLog(@"after changing center.subview.frame:%@",NSStringFromCGRect(self.subViewController.view.frame));

ログ出力:

after changing center. subview.frame:{{-320, -240}, {640, 480}}

今、私は何かがペン先にねじ込まれているかもしれないと感じており、それはスプリングとストラット/サイズと位置のオプションと関係があると推測しています。これは、IBに関して私が最も理解していない機能であるため、私はこれを推測することしかできません。

この問題を引き起こしている可能性があるものに関する他のアイデアはありますか?ビューコントローラのビューを他のビューコントローラのビューに合わせて自動的に配置されるように、ビューコントローラのビューをIBで設定する方法に関する一般的なヒントはありますか?そして、設定した後、setCenterはそれらを動的に移動する正しい方法ですか?

4

2 に答える 2

6

あなたがしていることを考えると、出力は正しいです。ポイント(0,0)は左上隅です。サブビューの中心をこれに設定すると、サブビューの左上隅は確かに になります(-640/2, -480/2)

左上隅を揃えるには、次を使用します

[self.subViewController.view setCenter:CGPointMake(320.0,240.0)];
于 2011-03-18T19:12:18.540 に答える
0

問題は不明です。中心を 0,0 に設定すると、フレームの原点は表示どおり -320、-240 になるはずです。おそらくCGRectを誤解していますか?CGRect は原点とサイズで構成されています。フレームは CGRect です。フレーム、サイズ、センターはすべて関連しており、フレームを変更するとサイズとセンターが変更され、センターを変更するとフレームが変更されます。

于 2011-03-18T19:11:11.333 に答える