2017-09-20 66 views
9

iOS 11'de, gizleme animasyonunun bir UIStackView içindeki davranışı değişti, ancak bu dosyayı herhangi bir yerde bulamadık.UIStackView Görünüm Animasyonunu Gizle

UIView.animate(withDuration: DiscoverHeaderView.animationDuration, 
         delay: 0.0, 
         usingSpringWithDamping: 0.9, 
         initialSpringVelocity: 1, 
         options: [], 
         animations: { 
          clear.isHidden = hideClear 
          useMyLocation.isHidden = hideLocation 
         }, 
         completion: nil) 
:

IOS 10

iOS 10 animation

IOS 11

iOS 11 animation

hem de kod olan

iOS 11'deki önceki davranışı nasıl geri yüklerim?

cevap

17

Sadece aynı sorunu yaşadım. Düzeltme, animasyon bloğu içinde "stackView.layoutIfNeeded()" ifadesini ekliyor. StackView, saklamak istediğiniz öğelerin konteyneridir.

UIView.animate(withDuration: DiscoverHeaderView.animationDuration, 
        delay: 0.0, 
        usingSpringWithDamping: 0.9, 
        initialSpringVelocity: 1, 
        options: [], 
        animations: { 
         clear.isHidden = hideClear 
         useMyLocation.isHidden = hideLocation 
         stackView.layoutIfNeeded() 
        }, 
        completion: nil) 

Neden bunun neden bir anda iOS 11'deki bir sorun olduğundan emin olun, ancak adil olmak her zaman önerilen yaklaşım olmuştur.

+0

Bir kahramansın: D –

+0

Ayrıca 'Springham' –

+0

Uygun adı da <= 10'da bir 'UIStackView' alt klasörünün 'gizli' özelliğini animasyon bloğunda ayarlama hatası vardı. bazı durumlarda göz ardı ediliyordu, bu yüzden en iyi yol onu animasyondan hemen önce değiştirmektir. –