これは多面的な質問であり、Core Plotを使用している人、またはUIViewControllerをモーダルに表示するのに問題があり、それをサブビューとして小さなUIViewに追加しようとしている人に役立ちます。
500x350 UIView(myView)にCore Plotグラフ(corePlotView)を追加し、長押しを使用して「モーダル」で正常に表示しています。
-(void)press:(UILongPressGestureRecognizer*)gesture {
if(gesture.state == UIGestureRecognizerStateEnded)
{
corePlotView.closeBtn.hidden = NO;
corePlotView.iPadCV = self;
[corePlotView loadFullGraph];
[ipadDelegate.detailViewController presentViewController:corePlotView animated:NO completion:nil];
}
}
これは、フルスクリーングラフを表示し、iPadを回転させたときにグラフのサイズを変更する簡単な方法です(非常に重要です)。ユーザーが「closeBtn」をクリックすると、corePlotViewからdismissModalViewControllerにメッセージが送信されます。
-(IBAction)close:(id)sender {
self.closeBtn.hidden = YES;
ipadDelegate = (AppDelegate_iPad *)[[UIApplication sharedApplication] delegate];
[ipadDelegate.detailViewController dismissViewControllerAnimated:NO completion:nil];
[iPadCV reloadOriginalGraph];
}
...次に、reloadOriginalGraphは、ユーザーが表示する前に持っていたすべてのプロットとデータを維持し(重要)、次のようにビューのサイズを元のフレームに戻します。
-(void)reloadOriginalGraph {
[corePlotView.view setFrame:myView.bounds];
[corePlotView loadOriginalGraph];
[myView addSubview:corePlotView.view];
[myView sendSubviewToBack:corePlotView.view];
}
[corePlotViewloadOriginalGraph]と[corePlotViewloadFullGraph]は、すべてのテキストサイズとパディングタイプのプロパティを元の設定からフルスクリーン設定に切り替えるメソッドを呼び出しています...問題ありません。
問題は、グラフのサイズが500x350に正常に縮小された場合、iPadが回転するとすぐに、corePlotViewがモーダルビューのフレームにサイズ変更されることです。明らかに、これは私が望んでいることではありません。500x350を何らかの方法で維持または制約する必要があるためです。
モーダルを提示してからaddSubviewを使用するときに、誰かがこの問題に遭遇しましたか?このメソッドは、ARCがビューを削除する前に、ビューをスタック上でライブに保ちますが、モーダルの一部の属性は永続的であるように見えます。UIViewControllerからこの「モダリティ」を取り除く方法はありますか?
ジェスチャを使用してコアプロットグラフを全画面に設定して元に戻す簡単な方法はありますか(ピンチジェスチャがcorePlotViewに登録されていないようです。そのため、長押しを使用しています)。