2017-06-22 30 views
-1

僅在專注於iPhone一段時間後回到iPad開發。我有一個結賬視圖,我希望將其推送到iPhone上的導航堆棧中,但在iPad上以模態表單的形式呈現。在iOS的9+的世界,是有辦法做到這一點,不涉及做這樣在iPhone上推視圖控制器並在iPad上作爲表單呈現的簡單方法?

if ipad { 
    self.presentViewController() 
} else { 
    self.navigationController?.pushViewController(viewController, animated: true 
} 

一些方法有些簡單。我主要想知道在使用traitCollections以及iOS多年來添加的一些新的自適應比特方面我是否缺少某些東西,而我錯過了。

要說清楚,我不是在尋找if聲明的不同方式。我查看是否有一種我可以調用的方法會根據情況自動顯示/推送。

回答

0

我不建議這樣做,但你可以使用它像找到UIUserInterfaceIdiom的解決方案:

switch UIDevice.current.userInterfaceIdiom { 
    case .pad: 
     break // iPad 
    case .phone: 
     break // iPhone 
    case .carPlay: 
     break 
    case .tv: 
     break 
    case .unspecified: 
     break 
    } 
1

您應該考慮使用大小類做到這一點。即使在iPad上,也有一些情況會讓人覺得不舒服,因此推動觀點仍然有意義。例如,如果您的應用程序支持滑動式多任務處理,並且您將其作爲幻燈片應用程序啓動,則其寬度將爲300點。

您可以通過視圖或視圖控制器的traitCollection訪問horizo​​ntalSizeClass。

if self.traitCollection.horizontalSizeClass == .regular { 
    // present it 
} else { 
    // push it 
} 
相關問題