Swift扩展示例

我最初想知道如何做这样的事情
UIColor.myCustomGreen

所以我可以定义我自己的颜色,并在我的应用程序中使用它们。

我之前已经研究了扩展名,我以为我可以用它来解决我的问题,但是我不记得如何设置扩展。在撰写本文时,Google搜索“Swift扩展”导致documentationseveral长时间tutorials,并且相当无用的Stack Overflow question

所以答案是在那里,但它需要一些挖掘通过文档和教程。我决定写这个问题和下面的答案,为Stack Overflow增加一些更好的搜索关键字,并提供一个快速回顾如何设置扩展。

具体我想知道:

>扩展位置在哪里(文件和命名约定)?
>什么是扩展语法?
>几个简单的常用例子是什么?

创建扩展名

添加一个新的swift文件文件>新>文件…> iOS>来源> Swift文件,但你可以称呼他们想要什么。

一般的命名约定是将它称为TypeName NewFunctionality.swift。

@L_403_4@

示例1 – Double

双重转换

import Swift // or Foundation

extension Double {

    func celsiusToFahrenheit() -> Double {
        return self * 9 / 5 + 32
    }

    func fahrenheitToCelsius() -> Double {
        return (self - 32) * 5 / 9
    }
}

用法

let boilingPointCelsius = 100.0
let boilingPointFarenheit = boilingPointCelsius.celsiusToFahrenheit()
print(boilingPointFarenheit) // 212.0

示例2 – String

字符串Shortcuts.swift

import Swift // or Foundation

extension String {

    func replace(target: String,withString: String) -> String {
        return self.replacingOccurrences(of: target,with: withString)
    }
}

用法

let newString = "the old bike".replace(target: "old",withString: "new")
print(newString) // "the new bike"

Here是一些更常见的字符串扩展。

示例3 – UIColor

UIColor CustomColor.swift

import UIKit

extension UIColor {

    class var customGreen: UIColor {
        let darkGreen = 0x008110
        return UIColor.rgb(fromHex: darkGreen)
    }

    class func rgb(fromHex: Int) -> UIColor {

        let red =   CGFloat((fromHex & 0xFF0000) >> 16) / 0xFF
        let green = CGFloat((fromHex & 0x00FF00) >> 8) / 0xFF
        let blue =  CGFloat(fromHex & 0x0000FF) / 0xFF
        let alpha = CGFloat(1.0)

        return UIColor(red: red,green: green,blue: blue,alpha: alpha)
    }
}

另见here

用法

view.backgroundColor = UIColor.customGreen

笔记

>一旦定义了扩展名,就可以像应用程序中的内置函数一样在应用程序的任何位置使用它。
>如果您不确定函数属性语法的外观,您可以选择一个类似的内置方法。例如,当我的选项点击UIColor.greenColor我看到声明是类func greenColor() – > UIColor。这给了我一个很好的线索,如何设置我的自定义方法
> Apple Documentation for Extensions> Objective-C扩展名称为类别。

相关文章

Swift 正式开源!Swift 团队很高兴宣布 Swift 开始开源新篇章。自从苹果发布 Swfit 编程语言,就成为了...
快,快,快!动动您的小手,分享给更多朋友! 苹果去年推出了全新的编程语言Swift,试图让iOS开发更简单...
开发者(KaiFaX) 面向开发者、程序员的专业平台! 和今年年初承诺的一样,苹果贴出了Swift语言的源码,...
本文由@Chun发表于Chun Tips :http://chun.tips/blog/2014/12/11/shi-yong-swift-gou-jian-zi-ding-yi...
本文由CocoaChina译者leon(社区ID)翻译 原文:THE RIGHT WAY TO WRITE A SINGLETON 在之前的帖子里聊过...
本文由CocoaChina译者leon(社区ID)翻译 原文:THE RIGHT WAY TO WRITE A SINGLETON 在之前的帖子里聊过...