我在哪里将常用实用程序功能放在iOS 8 + Swift中

Joh*_*Doe 6 ios swift xcode6 ios8

我有以下方法(例如),我希望能够在iOS + Swift项目中的任何ViewController中使用它:

func initializeBlurEffectOnGivenUIView(UIViewToBeBlurred: UIView) {

    let UIViewToBeBlurredHeight = UIViewToBeBlurred.frame.size.height
    let UIViewToBeBlurredWidth = UIViewToBeBlurred.frame.size.width
    let UIViewToBeBlurredX = UIViewToBeBlurred.frame.origin.x
    let UIViewToBeBlurredY = UIViewToBeBlurred.frame.origin.y

    let blurEffect:UIBlurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light)
    let vibrancyEffect = UIVibrancyEffect(forBlurEffect: blurEffect)

    let vibrancyEffectView = UIVisualEffectView(effect: vibrancyEffect)
    let blurEffectView:UIVisualEffectView = UIVisualEffectView(effect: blurEffect)
    blurEffectView.frame = CGRectMake(UIViewToBeBlurredX, UIViewToBeBlurredY, UIViewToBeBlurredWidth, UIViewToBeBlurredHeight)
    blurEffectView.contentView.addSubview(vibrancyEffectView)

    UIViewToBeBlurred.addSubview(blurEffectView)
}
Run Code Online (Sandbox Code Playgroud)

我有更常见的助手,比如那里我也想提供.如何构建应用程序来实现此目的?

mat*_*att 18

如果函数是自由全局函数,则将函数放在任何文件的顶层.(只是不要不小心重复自己,并在所有文件的顶层放置相同的功能.)例如,这就是我用delay我在这里描述的效用函数做的事情:dispatch_after - swift中的GCD?

但是,在您给出的示例的特定情况下,我可能会将其放在UIView的扩展中.我将其重写为实例方法,因此我们不是模糊另一个视图,而是从现有视图和模糊开始self.

  • 这应该是正确的答案.问题本身提到了共同的效用函数. (3认同)

Mik*_*rne 7

使用扩展名,如下所示:

extension UIView {
    func initializeBlurEffect() {

        let height = self.frame.size.height
        let width = self.frame.size.width
        let x = self.frame.origin.x
        let y = self.frame.origin.y

        let blurEffect:UIBlurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light)
        let vibrancyEffect = UIVibrancyEffect(forBlurEffect: blurEffect)

        let vibrancyEffectView = UIVisualEffectView(effect: vibrancyEffect)
        let blurEffectView:UIVisualEffectView = UIVisualEffectView(effect: blurEffect)
        blurEffectView.frame = CGRectMake(x, y, width, height)
        blurEffectView.contentView.addSubview(vibrancyEffectView)

        self.addSubview(blurEffectView)
    }
}
Run Code Online (Sandbox Code Playgroud)

然后像这样称呼它:

myview.initializeBlurEffect()
Run Code Online (Sandbox Code Playgroud)