2012-09-25 55 views
3

我的應用具有分離的主控細節界面:當用戶點擊屏幕細節側的特定按鈕時,我使用UIModalTransitionStyleFlipHorizontalmodalTransitionStyle,以便我可以呈現新的控制器模態,並使其看起來好像詳細信息面板已「翻轉」到新界面。具有主控細節控制器的模態視圖控制器尺寸

雖然這在iPhone上運行良好,但當我在iPad上嘗試時,新模式控制器從屏幕的細節側翻轉,但在動畫結束時,它覆蓋整個屏幕。

我怎樣才能使控制器僅在畫面的細節側空翻?

回答

0

我的問題是,我是從一個普通UIViewController呈現控制器,但我已經從拆分視圖控制器呈現它。

+0

對不起,這是你的錯誤,你不再尋找解決方案?你有一個模態視圖控制器在屏幕的一側顯示,在細節上?動畫和只保留細節?我不確定你在尋找解決方案,但查看我的答案。我可以看到你在回答這個問題後提出了一個獎勵,所以我假設你沒有設法得到你想要的東西。 – Daniel

+0

爲我工作的實際答案是在這裏:http://stackoverflow.com/a/12763120/126855 – Bill

+0

哦很酷,沒有看到答案,這是我在我的答案也解釋。 – Daniel

4

如果你還沒有想通了這一點呢,你最那裏的方式。您需要爲「當前上下文」定義模態視圖的表示上下文,以便它僅在詳細視圖中操作,而不是在整個超視圖中操作。

做到這一點最簡單的方法是設置一個賽格瑞在故事板視圖。在IB中,創建新的視圖控制器,添加一個segue並通過給它一個名稱「flipper」來編輯segue行,將其設置爲模態,將其設置爲翻轉並將其設置爲「當前上下文」。

一旦這些屬性設置,你可以Segue公司的視圖控制器 - 但這樣的詳細視圖控制器啓動它:

[self performSegueWithIdentifier:@"flipper" sender:self]; 

如果你需要做的代碼中的過渡情況就會像這樣:

UIViewController *abc = [self.storyboard instantiateViewControllerWithIdentifier:@"flipper"]; 
[abc setModalPresentationStyle:UIModalPresentationCurrentContext]; 
[abc setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; 
[self presentViewController:abc animated:YES completion:nil]; 

很好。

+1

對不起,我在打字時看不到你的答案。也許這會幫助別人。 – CocoaEv

+0

我沒有使用故事板,但感謝回覆! – Bill

0

對我有2個選項,以正確的方式(圖動畫轉換)和哈克的方式(會粘上模態呈現控制器)。正如你所知道的,首先,你可以展示你的模態視圖控制器,一個模態視圖控制器接管屏幕,並且是呈現時唯一可訪問的控制器,但是你可以調整它的大小,以便它最終呈現在上面只有屏幕的細節部分,這裏的問題是它不打算調整大小和放錯位置,而且在旋轉發生時遇到問題真的很容易。當此控制器存在時,您也將無法與您的UISplitViewController的主控部分進行交互。

這可以這樣來完成,例如:

UIViewController *detail = [[UIViewController alloc] init]; 

detail.modalPresentationStyle = UIModalPresentationFormSheet; 
detail.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 

if([self respondsToSelector:@selector(presentViewController:animated:completion:)]){ 
    [self presentViewController:detail animated:YES completion:nil]; 
}else{ 
    [self presentModalViewController:detail animated:YES]; 
} 

detail.view.superview.frame = CGRectMake(320.0, 0.0, self.view.frame.size.width - 320.0, self.view.frame.size.height); 

[detail release]; 

您可能需要調整細節視圖控制器視圖的上海華盈的中心......這我不推薦。

您的其他解決方案是在您的詳細視圖控制器中使用UIView動畫來交換視圖和動畫以翻轉。

要查看看起來如何,請查看iOS的Facebook應用程序,在聊天時,您可以點擊右上角的[...]按鈕,並且視圖的內容翻轉可以調整該人/聊天的通知設置。

例如,你可以做,當你在詳細視圖控制器輕按一鍵下面:

UIViewController *someOtherController = [...]; 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.8]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft 
         forView:self.view 
         cache:YES]; 

[self.view addSubview:someOtherController.view]; 

[UIView commitAnimations]; 

你會做反向將其刪除。

相關問題