我的解決方案主要基於貼在這裏的其他解決方案,但因爲我不得不嘗試許多不同的事情來得到它的實際工作,我張貼。 Mine是針對iOS 10的,僅適用於縱向模式的Swift 3.1。(在橫向模式下未測試)我的解決方案的目標是顯示比呈現視圖更小的模式,以便我可以在後臺看到呈現視圖。
我不得不在Interface Builder中正確配置UIViewController,否則我的代碼將無法工作。這是我的設置。我發現我的解決方案可以使用Cross Dissolve
和Cover Vertical
轉換樣式。我認爲我在IB的關鍵是演示文稿的Over Full Screen
--它似乎沒有與此設置的其他值一起工作。
這裏是在的UIViewController我想模態呈現代碼。然後我在其他地方使用present(_:animated:completion:)
。此外,在VC,我會介紹有模式,我有一個布爾值,didLayout
初始化爲false
:
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
if !didLayout {
let width:CGFloat = self.view.bounds.width * 0.95 //modify this constant to change the amount of the screen occupied by the modal
let height:CGFloat = width * 1.618 //golden ratio
self.view.superview!.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.15) //slightly dim the background to focus on the modal
let screen = self.view.superview!.bounds
let frame = CGRect(x: 0, y: 0, width: width, height: height)
let x = (screen.size.width - frame.size.width) * 0.5
let y = (screen.size.height - frame.size.height) * 0.5
let mainFrame = CGRect(x: x, y: y, width: frame.size.width, height: frame.size.height)
self.view.frame = mainFrame
didLayout = true
}
}
您好,我得到設置在使用該模態的視圖的方法viewWillAppear中一個自定義的尺寸: [self.view.superview的setBounds:CGRectMake(0,0, 200,200)]; 但是現在,該窗口並沒有以佈局 – 2013-05-13 10:05:06
爲中心(http://stackoverflow.com/questions/2457947/how-to-resize-a-uipresentationformsheet/4271364#4271364) – 2013-05-13 10:25:16
http:// stackoverflow.com/questions/25787946/ios8-unable-to-re-size-the-modal-form-sheet-after-changing-the-orientation 檢查此鏈接,你可以得到解決 – 2014-12-09 12:51:43