簡體   English   中英

將動畫添加到以編程方式創建的UIview

[英]add animation to UIview created programmatically

我試圖建立一個UILabel。

但是我想在該標簽彈出時進行動畫處理

我應該在哪里制作標簽動畫?

這是我的代碼

static func setupView(view: UIView){
       let networkStatusView = UILabel(frame: CGRect(x: 0, y: 40, width: view.bounds.width, height:50))
        networkStatusView.tag = 20
        networkStatusView.text = "offline"
        networkStatusView.font = UIFont.boldSystemFont(ofSize: 18)
        networkStatusView.translatesAutoresizingMaskIntoConstraints = false
        networkStatusView.textAlignment = .center
        networkStatusView.backgroundColor=UIColor.green
        networkStatusView.layer.borderColor = UIColor.white.cgColor

        UIView.animate(withDuration: 0.5) {
        view.addSubview(networkStatusView)
        }
        view.layoutIfNeeded()    
    }

addSubview函數不可設置動畫。 假設您想要淡入效果,則應使用以下命令更改最后4行:

view.addSubview(networkStatusView)
networkStatusView.alpha = 0.0
UIView.animate(withDuration: 0.5) {
    networkStatusView.alpha = 1.0
    view.layoutIfNeeded()
}

希望這可以幫助

只是讓它像從頂部掉下來一樣

將View的初始高度設為:0

並對其進行動畫處理:

view.addSubview(networkStatusView)
    UIView.animate(withDuration: 0.5) {
         networkStatusView.frame.size.height = 50
        view.layoutIfNeeded()
    }

有助於可視化UIView.animate的工作方式;

在調用UIView.animate方法之前,請先考慮一下UILabel所處的狀態。 例如,基於qtngo的答案networkStatusView將是當前ViewController視圖的子視圖,並且由於alpha設置為0,因此將不可見。

現在,在動畫塊中:

UIView.animate(withDuration: 0.5) { networkStatusView.alpha = 1.0 view.layoutIfNeeded() }

開發人員告訴系統在接下來的0.5秒內為networkStatusView設置動畫, networkStatusView視圖的Alpha從0更改為1.0,從而使其可見。

希望這可以幫助。

暫無
暫無

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

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