2014-09-21 67 views
5

根據documentation,更改自定義鍵盤的高度很簡單。下面是蘋果的文件iOS 8自定義鍵盤應用程序擴展 - 改變方向的高度

override func viewDidAppear(animated: Bool) { 
    super.viewDidAppear(animated) 

    let constraint = NSLayoutConstraint(item: self.view, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 0.0, constant: 400.0) 
    self.view.addConstraint(constraint) 
} 

這樣確實所示的代碼迅速等效的版本,但它改變了高度的恆定值,如果你更改設備的取向,這是不可取的。在縱向模式下將鍵盤高度設置爲400.0可能沒有問題,但在橫向模式下可能不合適。例如:iPhone 5的標準鍵盤視圖大小爲縱向320,216和橫向568,162。設置一個不變的高度會將鍵盤視圖大小更改爲320,400縱向和568,400(實際上是整個屏幕)橫向。

我唯一的想法現在是創建一個包含每個設備類型和每個方向的鍵盤視圖大小的字典,然後每個設備改變方向時更新恆定高度約束。有沒有人找到更優雅的解決方案?

+0

也尋找同樣的答案 – honcheng 2014-09-25 03:35:10

回答

2

我已經在我的鍵盤的視圖控制器實現willAnimateRotationToInterfaceOrientation:做到了這一點。理論上我們應該使用新的 willTransitionToTraitCollection:withTransitionCoordinator:或理想情況下可能viewWillTransitionToSize:withTransitionCoordinator:,但這些似乎不會在UIInputViewControllers上調用,至少從8.0.2開始。所以目前最好的選擇似乎是保持對你的heightConstraint的引用,並修改你的實現中的常量willAnimateRotation

而且我記得有位與實際找出新方向的疑難雜症的;最後我做喜歡的事:

let isLandscape: Bool = UIInterfaceOrientationIsLandscape(toInterfaceOrientation),然後使用。

相關問題