簡體   English   中英

uistackview中的排列子視圖中的動畫“跳躍”

[英]Animation within arranged subview in uistackview “jumps”

我有一個包含幾個排列的子視圖的水平UIStackView。

我想在用戶點擊按鈕時刪除一個已安排的子視圖(讓我們稱之為A),但就在此之前我想要做一個快速動畫。 我想做自己的動畫,所以我不僅可以動畫制作默認基本動畫的stackView.removeArrangedSubview ,而不是我想要的特殊動畫。

在A中,我有另一個視圖(我們稱之為B),它使用自動布局進行居中X和居中。

當我將被安排的子視圖A的A.widthAnchor.constant設置為0時,其他arrangedsubviews的子視圖逐漸到達它的位置,孩子B在動畫之前就失去了它的CenterX並向左移動。 或者它可能不會丟失centerX,但它在一個微小的A(寬度= 0,並從左側開始)居中X,但A的寬度不應該立即為0,但在動畫完成后... 。

我盡可能多地嘗試解釋清楚,但我知道這可能令人困惑。 這是顯示問題的視頻。 在動畫開始之前,在arrangedsubview A(拍攝所有屏幕)中的圖像(B)在左側“跳躍”。

https://drive.google.com/open?id=1nTDRe5zirbuQi86WVBTuU-iDU8aq0lcw

以下是制作此動畫的非常簡單的代碼:

   UIView.animate(withDuration:4,delay:0, options:.curveEaseInOut, animations : {

        self.c.constant = 0 // c is A.widthAnchor constraint
        self.stackView.layoutIfNeeded()

    },completion: { _ in
        // done
    })

我發現自己:實際上,問題在於我做的時候

Stackview.layoutIfNeeded()

stackview中的內容可以動畫,但不能是stackview本身。 因此stackview在動畫開始之前更新了它的寬度。 我剛改變

superviewThatContainTheStackView.layoutIfNeeded()

所以現在一切正常:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM