0

これは私のコードです。小さなダイアログ ボックスが表示され、ダイアログが画面全体に表示されます。なにが問題ですか?

ChangeProfileImage *changeProfileImage =[[ChangeProfileImage alloc] init];

changeProfileImage.modalPresentationStyle = UIModalPresentationFormSheet;
changeProfileImage.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:changeProfileImage animated:YES];
changeProfileImage.view.superview.frame = CGRectMake(0, 0, 200, 200);//it's important to do this after 
changeProfileImage.view.superview.center = self.view.center
4

1 に答える 1

0

このコードの問題点をすべて説明する準備はできていましたが、シンプルな iPad シングル ビュー アプリケーションをセットアップして、次のコードを試してみました。

- (IBAction)FlipPressed:(id)sender {
    UIViewController *vc = [[UIViewController alloc] init];
    UIView *view = [vc view];
    [view setBackgroundColor:[UIColor redColor]];
    [vc setModalPresentationStyle:UIModalPresentationFormSheet];
    [vc setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
    [self presentModalViewController:vc animated:YES];
    [[[vc view] superview] setFrame:CGRectMake(0, 0, 200, 200)];
    [[[vc view] superview] setCenter:[[self view] center]];
}

これを試してみると、角が丸くなった 200x200 の赤いボックスが表示され、画面の中央に表示されます。

私が知る限り、私はあなたのコードをほぼ正確に複製しました。あなたが望む結果が得られたと思いますよね?

編集/更新

さらなるテストでは、iPad が縦向きの場合にのみ、このコードが適切に機能することが示されているようです。そうしないと、ビューが「垂直に」(iPad の向きに関して) 反転しているように見え、ビューが中央に配置されません。

于 2012-05-06T13:15:38.063 に答える