1

modalviewcontroller のアニメーションを false に設定しようとしましたが、フレーム調整が機能しませんが、アニメーションをオンにしようとすると正常に機能します。これに対する修正はありますか?以下は私のコードのコンテキストです:

MyModal *modal = [[MyModal alloc] initWithNibName:@"MyModal" bundle:nil];
modal.modalPresentationStyle = UIModalPresentationFormSheet;

modal.view.superview.frame = CGRectMake(0, 0, 458, 230);
modal.view.superview.center = self.view.center;

[self.navigationController presentModalViewController:modal animated:NO];
4

2 に答える 2

0

私の意見では、あなたはコードを取るべきです

modal.view.superview.frame = CGRectMake(0, 0, 458, 230);
modal.view.superview.center = self.view.center;

MyModalの-(void)viewDidLoadまたは-(void)viewWillAppearメソッドに。

nibからビューを起動するにはコードよりも時間がかかります;ビューをメモリに起動する前に、nil modal.viewのフレームはすでにリセットされており、nibのフレームが読み込まれます。アニメーションをオフにすると、アニメーションの表示に時間がかかり、フレームが表示されます。サイズを変更できます。

于 2013-03-05T08:42:39.297 に答える
0

あなたがやろうとしていることは実際には間違っています。あなたのコードから;

 MyModal *modal = [[MyModal alloc] initWithNibName:@"MyModal" bundle:nil];
    modal.modalPresentationStyle = UIModalPresentationFormSheet;

    modal.view.superview.frame = CGRectMake(0, 0, 458, 230);
    modal.view.superview.center = self.view.center;

    [self.navigationController presentModalViewController:modal animated:NO]

まだ作成されていないビューのフレームを設定しているため、上記のコードは機能しません。

そのため、フレームを設定できるのは、新しいビューが作成または表示された後だけです。MyModalビューコントローラーで、フレームを設定しますviewDidAppearで行わないように注意してくださいviewWillAppear

- (void) viewDidAppear:(BOOL)animated
 {
      // code to set the frame here

 }

お役に立てれば。

于 2013-03-05T08:41:07.757 に答える