だから私はこれを自分で認識し、確認するためにこの答えを見つけました:
contentSizeForViewInPopover がアニメーションしないようにする
基本的に、表示する必要があるデータの量に応じて、ポップオーバーのサイズを動的に変更したいという点で、私は同様のボートに乗っています。また、ポップオーバー ビューが所定の位置に移動するこのアニメーション アクションも取得しています。問題は、テキスト ビューのコンテンツ ビューのサイズもポップオーバーのテキスト ビューのフレームも、viewDidAppear または viewDidLayoutSubviews が呼び出されるまでわからないため、呼び出し元/親でポップオーバーのコンテンツ サイズを設定できないことです。もちろん、この時点では手遅れです。ポップオーバーはすでに表示されているため、この不要なアニメーションが表示されます。
テキストビューが表示しているデータの量に合わせて、ポップオーバービューコントローラークラスのテキストビューのサイズを動的に設定しています。これは、フレームサイズが定義されている/既知の/どのように言いたい場合でも機能しますビューのライフサイクルでまだその時点に達していない場合。
私は自分のView Controllerを持っていて、ストーリーボードですべてを表示していることに言及する必要があります。
これは理にかなっていますか?うまく説明できていることを願っています。ヘルプや提案は大歓迎です。
EDITこれは、ポップオーバーにロードしているView ControllerからのviewDidLayoutSubviewsメソッドです-うまくいけば、これで明らかになります。これを初めてロードするときに、viewDidLayoutSubviews または viewDidAppear でこれを行わないと、2 つのテキスト ビューのフレームが CGRectZero になり、テキスト ビューがコンテンツに対して正しくサイズ変更されず、ポップオーバー サイズも正しくありません。
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
self.physicianDataNewValueTextView.text = self.physicianDataNewValue;
CGRect frame = self.physicianDataNewValueTextView.frame;
frame.size.height = self.physicianDataNewValueTextView.contentSize.height;
self.physicianDataNewValueTextView.frame = frame;
self.physicianDataOldValueTextView.text = self.physicianDataOldValue;
frame = self.physicianDataOldValueTextView.frame;
frame.size.height = self.physicianDataOldValueTextView.contentSize.height;
self.physicianDataOldValueTextView.frame = frame;
self.contentSizeForViewInPopover = CGSizeMake(384.0f, self.physicianDataOldValueTextView.frame.size.height + 75.0f);
}