SORU
27 EYLÜL 2012, PERŞEMBE


Nasıl sınırlama değişiklikleri animasyon muyum?

AdBannerView eski bir uygulama yeniliyorum ve reklam yoktur hiçbir zaman, ekran kapalı slayt. Bu ekran üzerinde slayt bir reklam var. Temel şeyler.

Eski stil, animasyon bir blok çerçevesi hazırladım. Yeni stil, IBOutlet Y belirleyen kısıtlaması için bir pozisyon var, bu durumda superview altından mesafe ve sürekli değiştir.

- (void)moveBannerOffScreen {
    [UIView animateWithDuration:5
             animations:^{
                          _addBannerDistanceFromBottomConstraint.constant = -32;
                     }];
    bannerIsVisible = FALSE;
}

- (void)moveBannerOnScreen {
    [UIView animateWithDuration:5
             animations:^{
                         _addBannerDistanceFromBottomConstraint.constant = 0;
             }];
    bannerIsVisible = TRUE;
}

Ve banner hamle, tam da beklendiği gibi, ama animasyon yok.

GÜNCELLEME:Ben yeniden izledim WWDC12 video "Best Practices for Mastering Auto Layout" animasyon kapsar. Kısıtlamaları güncelleme nasıl yapılır CoreAnimation kullanarak anlatılır.

enter image description here enter image description here

Aşağıdaki kodu denedim, ama tam olarak aynı sonuçları elde.

- (void)moveBannerOffScreen {
    _addBannerDistanceFromBottomConstraint.constant = -32;
    [UIView animateWithDuration:2
                     animations:^{
                         [self.view setNeedsLayout];
                     }];
    bannerIsVisible = FALSE;
}

- (void)moveBannerOnScreen {
    _addBannerDistanceFromBottomConstraint.constant = 0;
    [UIView animateWithDuration:2
                     animations:^{
                         [self.view setNeedsLayout];
                     }];
    bannerIsVisible = TRUE;
}

Bir yan not olarak, birçok kez kontrol ettim ve bu ana iş parçacığında yürütülür.

CEVAP
30 EYLÜL 2012, Pazar


Önemli notlar:

  1. Animasyon blok içinde layoutIfNeeded aramalısın. Apple actually recommends animasyon blok önce bir kez bekleyen tüm düzen işlemleri tamamlanmıştır emin olmak için arayın
  2. Bunu özellikle aramak gerekirüst görünüm(*9 örneğin*), kısıtlamalar, bağlı olduğu alt görünüm. Böylece güncellenirtümkısıtlı görüş, animasyon dahil olmak üzere diğer görüşleri olabilir kısıtlı görünümü değiştirdin kısıtlamanın (örneğin, Görünüm B bağlı alt Görünüm ve Görünüm değişti Bir üst ofset ve istediğiniz Görünümü B animate ile)

Bunu deneyin:

- (void)moveBannerOffScreen {
    [self.view layoutIfNeeded];

    _addBannerDistanceFromBottomConstraint.constant = -32;
    [UIView animateWithDuration:5
        animations:^{
            [self.view layoutIfNeeded]; // Called on parent view
        }];
    bannerIsVisible = FALSE;
}

- (void)moveBannerOnScreen { 
    [self.view layoutIfNeeded];

    _addBannerDistanceFromBottomConstraint.constant = 0;
    [UIView animateWithDuration:5
        animations:^{
            [self.view layoutIfNeeded]; // Called on parent view
        }];
    bannerIsVisible = TRUE;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MyCyberAcademy

    MyCyberAcade

    2 EKİM 2011
  • Rickymon Tero

    Rickymon Ter

    1 Ocak 2007
  • SuicideSheeep

    SuicideSheee

    8 Ocak 2012