swift送禮物動畫

2021-09-11 13:02:48 字數 2051 閱讀 2233

最近做了乙個用swift寫的送禮動畫,這個動畫本來是在專案中用到的,然後專案改了需求用不上了就想到用swift封裝一下以後如果用得到可以借鑑下。 想看下效果圖:

####思路 1.首先建立乙個動畫的資料model。

struct animationmodel

iflet giftname = dict["giftname"]

iflet giftnum = int(dict["giftnum"] ?? "0")

iflet giftheadimage = dict["giftheadimage"]

iflet giftusername = dict["giftusername"]

}}複製**

2.自定義乙個動畫檢視,這個檢視自己控制乙個禮物數量的動畫。

class animationlabel: uiview 

}lazy var headview: uiimageview = ()

lazy var labelname: uilabel = ()

lazy var labelgift: uilabel = ()

lazy var labelcount: uilabel = ()

lazy var giftimageview: uiimageview = ()

override init(frame: cgrect)

required init?(coder adecoder: nscoder)

}複製**

3.禮物數量放大縮小的動畫通過定時器來控制,用禮物的總數量來除乙個數,這個數是每次禮物數量放大縮小動畫完成後疊加的數量,知道疊加的數量等於送禮的總數量就停止動畫。並且從父檢視上移除。

extension animationlabel

func getlabeview(frame:cgrect, title:string) -> uilabel

//開始禮物數量的動畫

func starttimer

()

func stoptimer

()

@objc func mystartanimation

(), completion: )

}uiview.animatekeyframes(withduration: 0.25, delay: 0, options: .allowuserinteraction, animations: )

uiview.addkeyframe(withrelativestarttime: 0.5, relativeduration: 0.5, animations: )

}) , completion: )}}

}複製**

4.自定義的檢視完成後,在來考慮從左平移過來和往上平移的動畫。從左平移直接用uiview的動畫就可以完成,然後在往上平移這裡喔考慮的是用scrollview的contentoffset來控制。每次新增乙個禮物檢視後往上平移乙個固定的offset,然後下乙個檢視加進來的時候就它的y值就加上這個固定的offset。

class sendgiftanimationscrollview: uiscrollview 

required init?(coder adecoder: nscoder)

func addanimationlabel(dict: [string:string])

private func addanimationview(sender:animationlabel) )

self.numheight! += margin

}}複製**

5.最後看下呼叫

var scrollview: sendgiftanimationscrollview?

override func viewdidload

()

override func touchesbegan(_ touches: set, with event: uievent?)

複製**

送禮物 題解

這道題目是到毒瘤題。首先我們至少去l個,所以我們可以把小於l的用單調佇列直接求出。對取l r個。顯而易見的是左右兩端必分別是這個區間的最小值和最大值。我們可以用01分數規劃。不放令結果最後為ans,則有 a j ans j a i ans i ans k 所以我們就可以愉快地分數規劃啦。includ...

送禮物 雙向dfs

思路 dfs 先把a陣列排序,由大變小 dfs出前n 2 2 可以湊出的數,放到陣列s中 把s陣列去重排序,行成乙個單調遞增序列 再dfs剩下的數 可以組成的數,每組成乙個,二分找s陣列匹配的最大值 include includeusing namespace std typedef long lo...

雙向DFS 送禮物

達達幫翰翰給女生送禮物,翰翰一共準備了n個禮物,其中第i個禮物的重量是g i 達達的力氣很大,他一次可以搬動重量之和不超過w的任意多個物品。達達希望一次搬掉盡量重的一些物品,請你告訴達達在他的力氣範圍內一次效能搬動的最大重量是多少。輸入格式 第一行兩個整數,分別代表w和n。以後n行,每行乙個正整數表...