さて、これが私のアプリでやりたいことです。画面の上半分にマップを使用して UIView を実装し、残りの半分に中央に 2 つのボタンを備えたテーブルビューを実装したいと考えています。ボタンの 1 つを押すと、マップがフルスクリーンになり、もう 1 つを押すと、tableView がすべての画面に収まります。
なにか提案を?
さて、これが私のアプリでやりたいことです。画面の上半分にマップを使用して UIView を実装し、残りの半分に中央に 2 つのボタンを備えたテーブルビューを実装したいと考えています。ボタンの 1 つを押すと、マップがフルスクリーンになり、もう 1 つを押すと、tableView がすべての画面に収まります。
なにか提案を?
UINavigationController のような 1 つのビュー コントローラーで、ビューの上半分のサイズのフレームで MKMapView を作成し、それをビュー コントローラーのサブビューとして追加します。次に、ボタンを保持する UIToolbar を作成し、フレームの上部を MKMapView の下部に合わせます。最後に、フレームが他のフレームのすぐ下にある UITableView を作成します (必ずデリゲートを接続してください)。
次に、マップを全画面表示にする UIBarButtonItem のターゲットを、次のように 3 つのビューすべてのフレームをアニメーション化するメソッドに割り当てます。
[UIView animateWithDuration:0.24
delay:0.0
options:UIViewAnimationCurveEaseOut
animations:(void (^)(void)) ^{
self.toolbar.frame = CGRectMake(0, MAP_HEIGHT_FULLSCREEN, 320, TOOLBAR_HEIGHT);
self.mapView.frame = CGRectMake(0,0,320,MAP_HEIGHT_FULLSCREEN);
self.tableView.frame = CGRectMake(0, MAP_HEIGHT_FULLSCREEN+TOOLBAR_HEIGHT, 320, MAP_HEIGHT_FULLSCREEN-MAP_HEIGHT);
}
completion:^ (BOOL finished){}
];
計画どおりに両方のビューを作成します。1 つのボタンをクリックすると、1 つのビューのフレームがフルスクリーンに合わせて変更されます。もう 1 つのボタンをクリックすると、他のビューにも同じことが行われます。