2014-05-01 36 views
0

我有一個地圖上有多個註釋。當我點擊一個我想從底部滑動一個小的UIView與關於此引腳的一些信息。如果我點擊一個名爲的按鈕,更多我希望視圖向上擴展,並提供更多信息。Mapkit自定義標註幻燈片視圖從底部

我不知道如何以正確的方式做到這一點。我的想法是爲定製標註定義新的xib和視圖控制器。但我只想顯示該視圖的一小部分,因此我應該將其框架從一開始設置爲一個固定的小值,或者使用自動佈局將其縮小到其內容?我怎樣才能從底部滑動它?我想我需要以模態或作爲一個childviewcontroller來顯示它,並使用一些動畫。

當用戶點擊我會用另一種DetailViewController與任一將被還示出模態或也可作爲一個childviewcontroller XIB文件。有沒有例子如何實現這樣的事情?或者有沒有更好的方法來做到這一點?

現在,自定義標註視圖對於每個註釋都是相同的。但是根據點擊哪個Annotation,我會有三個不同的DetailViewControllers。 我的基本想法是分開這些東西,所以我的MapViewController不會太大。

回答

1

我不會在幻燈片視圖中使用視圖控制器。只需創建一個UIView,並在主視圖框架之外創建一個框架,並將其設置爲子視圖。就像這樣:

UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height, self.view.frame.size.width, 200)]; 
[self.view addSubview:v]; 
self.infoView = v; 

你可以做,在viewDidLoad中,或任何你想要在你的視圖的初始設置。它不可見,因爲它剛好在屏幕的底部。然後,當用戶點擊標註按鈕時,將您的infoView設置爲像這樣的位置:

-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control 
{ 
    // Populate infoView with whatever info you want to show about the annotation 
    // 
    // ... 
    // 
    // Then animate the view into position 
    [UIView beginAnimations:@"infoView" context:nil]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationDuration:0.5]; 
    [UIView setAnimationDelegate:self]; 
    self.infoView.center = CGPointMake(0, self.view.frame.size.height - 200); 
    [UIView commitAnimations]; 
} 
+0

我喜歡將標註視圖放在主視圖框之外的想法。不過,我需要一個標註視圖和三種不同類型的詳細視圖(當用戶決定在標註內點擊「更多」時)。我認爲將所有東西都放在同一個視圖控制器中是非常重要的。是否可以通過自動佈局進行滑動或更改框架? – kukudas