如何向 UIView 添加“雪状”效果

iPr*_*ram 5 core-animation core-graphics uiview ios

我目前正在制作圣诞节应用程序,我希望它在屏幕上“下雪”。

到目前为止,我有这个代码:

斯威夫特

import Foundation
import UIKit

@IBDesignable
class Snow:UIView
{

    var viewHeight = CGFloat(0)
    /*
    required init(coder aDecoder: NSCoder) {
        //Initilse UIView
        super.init(coder: aDecoder)!
    }
    */

    override func drawRect(rect: CGRect) {
        let path = UIBezierPath(ovalInRect: rect)
        UIColor.whiteColor().setFill()
        path.fill()
    }
}
Run Code Online (Sandbox Code Playgroud)

视图控制器.swift

@IBDesignable
class ViewController: UIViewController {

    @IBInspectable var BgColor:UIColor = UIColor.whiteColor()

    var animator: UIDynamicAnimator? = nil;
    var gravity = UIGravityBehavior()


    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = BgColor
        /*listSubviewsOfView(self.view)*/ /*Not needed to answer this*/
        var snow = Snow(frame: CGRect(x: 0, y: 0, width: 5, height: 5))
        snow.opaque = false
        self.view.addSubview(snow)

        animator = UIDynamicAnimator(referenceView:self.view);
        animator?.addBehavior(gravity)

        gravity.addItem(snow)
        let direction = CGVectorMake(0.0, 1.0)
        gravity.gravityDirection = direction
    }


    /*Not needed to solve this*/
    /*
    func listSubviewsOfView(views: UIView) {
        var index = 0
        let randomNumbers = [Int](1...24).shuffle()
        for view in views.subviews
        {
            if let _ = view.restorationIdentifier
            {
                view.setValue(String(Int(randomNumbers[index])), forKey: "updateText")
                index++
            }
            if index == randomNumbers.count {
                break
            }
        }
    }
    */

}
Run Code Online (Sandbox Code Playgroud)

这是它目前的样子(在 iPhone 5 模拟器中)

在此处输入图片说明

如您所见,UIView下降到屏幕底部的速度太快(像砖块而不是雪一样)。

我怎样才能让“雪”随着风的影响下降得更慢?

Ste*_*fan 3

我会使用 SKEmitterNode 来完成此操作。SpriteKit 中还有一个图形编辑器,您可以在其中轻松创建雪花效果。这是关于此的简短教程:在此处输入链接描述