簡體   English   中英

Swift:動畫UIView朝着源而不是遠離源

[英]Swift: Animated UIView moves towards source instead of away from it

我認真地環顧四周,但找不到能回答我問題的內容,因此,如果您找到正確的解決方案,請告訴我。

所以:我用Xcode編寫了一個小應用程序,其中兩個標簽應該從當前位置移動到上方350點的另一個位置。 我像這樣對它們進行動畫處理:

UIView.animate(withDuration: 2.0 , animations: {            
    self.label1.center.y += CGFloat(-350)
    self.label2.center.y += CGFloat(-350)
})

實際發生的是,只要碰到這條線,標簽就會跳下350點,然后再將350點向上移動到其源頭。 當我將CGFloat值更改為+350時,標簽跳了350點,然后又移回了源。 如此看來,Xcode並非從源頭開始制作動畫,而是嘗試使動畫進入源代碼。 老實說,我不知道為什么,因為有關動畫的所有文檔都建議這樣做。

順便說一句,我還看了看我是否對標簽的y位置有約束,但沒有任何約束。

第一次嘗試:

self.label1.center.y += CGFloat(-350)
self.label2.center.y += CGFloat(-350)

然后:

UIView.animate(withDuration: 2.0 , animations: {
    layoutIfNeeded()
}

注意:如果對標簽使用約束,則應通過更改其約束而不是向其添加CGFloat來更改其位置。 然后嘗試:

UIView.animate(withDuration: 2.0 , animations: {
    layoutIfNeeded()
}

可以嘗試在動畫塊中嘗試以下代碼,而不是嘗試移動視圖的中心(這是一種不好的做法)

self.label2.transform = CGAffineTransform(scaleX: 0, y: 350)

這實際上將為圖層設置動畫,而不是視圖的實際框架。

暫無
暫無

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

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