2014-09-21 23 views
5

değiştirme yükseklik documentation göre basittir. İşte Apple'ın belgelerineiOS 8 Özel Klavye Uygulama Uzantısı - Özel klavyenin yüksekliğini değiştirme yönelim

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) 
} 

Bu işliyor gösterilen kod hızlı eşdeğer versiyonu, ancak bu cihazın yönünü değiştirirseniz arzu olmayan bir SABİT değere yüksekliğini değiştirir. Klavye yüksekliğini 400.0 olarak ayarlamak dikey modda iyi olabilir, ancak manzara modunda uygun olmayacaktır. Örneğin: Bir iPhone 5 için standart klavye görünümü boyutu portre olarak 320,216 ve manzarada 568,162'dir. Sabit bir yüksekliğin ayarlanması, klavye görünümü boyutunun dikey olarak 320,400 ve manzaradaki 568.400 değerine (tüm ekranın etkili bir şekilde) dönüşmesini sağlar.

Benim şu an sadece düşünce her cihaz tipi ve her yön için klavye görünüm boyutunu içeren bir sözlük oluşturmak ve sonra sürekli yükseklik sınırlaması cihaz yönünü değiştirir her zaman yenilenmesini sağlar. Daha şık bir çözüm bulmuş olan var mı?

+0

çok aynı yanıt mı arıyorsunuz – honcheng

cevap

2

benim klavyenin görünümü kumandam willAnimateRotationToInterfaceOrientation: uygulayarak bu yaptık. Teorik olarak belki viewWillTransitionToSize:withTransitionCoordinator: ideal olarak yeni willTransitionToTraitCollection:withTransitionCoordinator: veya kullanarak olmalıdır, ancak bu en az 8.0.2 itibariyle UIInputViewControllers çağrıda almak için görünmüyor. Yani şu anda en iyi seçenek heightConstraint bir başvuru tutmak için olmak ve willAnimateRotation sizin uygulanmasında sabit değiştirmek gibi görünüyor.

Ayrıca ben aslında yeni yönelimini ortaya çıkarmaya gereken bir nokta biraz vardı hatırlıyorum; O kullanılarak ardından

let isLandscape: Bool = UIInterfaceOrientationIsLandscape(toInterfaceOrientation) ve: Ben böyle bir şey yaptığını sona erdi.