您的位置:首页 > 移动开发 > Swift

swift的一些基类的扩展

2017-06-05 14:34 106 查看
//

// NSString+Extension.swift

// FlowerField

//

// Created by CJW on 17/6/5.

// Copyright © 2017年 cjw. All rights reserved.

//

import Foundation

extension String {

/// 判断是否是手机号

func isPhoneNumber() ->
Bool {

let pattern =
"^1[345789]\\d{9}$"

return
NSPredicate.init(format:"SELF MATCHES %@",pattern).evaluateWithObject(self)

}

/// 判断是否是邮政编码

func isPostCode() ->
Bool {

let pattern =
"^\\d{6}$"

return
NSPredicate.init(format:"SELF MATCHES %@",pattern).evaluateWithObject(self)

}

}

//

// NSObject+Extension.swift

// FlowerField

//

// Created by CJW on 17/6/5.

// Copyright © 2017年 cjw. All rights reserved.

//

import UIKit

extension NSObject {

///显示错误信息

func showErrorMessage(message:String){

//只有UIVIewhe UIViewController才显示错误信息

if
self.isKindOfClass(UIView.self)
|| self.isKindOfClass(UIViewController.self)
{

UIAlertView(title:
"花田小憩", message: message, delegate:
nil, cancelButtonTitle:
"好的").show()

}

}

}

extension NSDate{

class
func dateWithStr(dateStr:String) ->
NSDate? {

let formatter =
NSDateFormatter()

formatter.dateFormat =
"yyyy-MM-dd HH:mm:ss"

//有的时候,有的服务器生产的时间是采用其他地区或者语音,这种情况,一定要设置本地话,比如这的aug
,如果你不设置成en,那么鬼才知道你要计息成什么样的

// formatter.locale = NSLocale(localeIdentifier: "en")

return formatter.dateFromString(dateStr)

}

//分类中可以直接计算型属性,因为他不需要分配储存空间

var dateDesc:String{

let formatter =
NSDateFormatter()

var formatterStr:String?

let calendar =
NSCalendar.currentCalendar()

if calendar.isDateInToday(self){

let seconds = (Int)(NSDate().timeIntervalSinceDate(self))

if seconds <
60{

return
"刚刚"

}else
if seconds < 60*60{

return
"\(seconds/60)分钟之前"

}else {

return
"\(seconds/60/60)小时之前"

}

}else
if calendar.isDateInYesterday(self){

formatterStr = "昨天 HH:mm"

}else {

//很多年前 : 2014-12-14:xx

let components = calendar.components(NSCalendarUnit.Year, fromDate:
self, toDate: NSDate(), options: [])

if components.year <
1 {

formatterStr = "MM-dd HH:mm"

}else {

formatterStr = "yyyy-MM-dd HH:mm"

}

}

formatter.dateFormat = formatterStr

return formatter.stringFromDate(self)

}

}

//

// UIViewController+HUD.swift

// FlowerField

//

// Created by CJW on 17/6/5.

// Copyright © 2017年 cjw. All rights reserved.

//

import UIKit

//keyWindow

let keyWindow:UIWindow =
UIApplication.sharedApplication().keyWindow!

private var HUDKey =
"HUDKey"

extension UIViewController {

var hud:MBProgressHUD?{

get {

return
objc_getAssociatedObject(self, &HUDKey)
as?
MBProgressHUD

}

set {

objc_setAssociatedObject(self, &HUDKey,
newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)

}

}

var good:Int?{

get {

return
200

}

set {

// _good = 300

XCLog(good)

}

}

/**

* 显示提示信息(有菊花,一直显示,不消失)

*/

func showHudInView(view:UIView,hint:String,yOffset:CGFloat?){

let HUD =
MBProgressHUD(view: view)

HUD.label.text = hint

HUD.margin =
10.0

HUD.offset.y = yOffset ??
0

view.addSubview(HUD)

HUD.showAnimated(true)

good =
100

hud = HUD

}

/**

显示纯文字提示信息(显示在keywindow上)

- parameter hint: 提示信息

- parameter duration: 持续时间(不填的话,
默认两秒)

- parameter yOffset: y上的偏移量

*/

func showHint(hint:
String, duration:
Double?, yOffset:CGFloat?) {

let view =
keyWindow

let HUD =
MBProgressHUD(view: view)

view.addSubview(HUD)

HUD.userInteractionEnabled =
false

HUD.mode = .Text

HUD.label.text = hint

HUD.offset.y = yOffset ??
0

HUD.showAnimated(true)

HUD.removeFromSuperViewOnHide =
false

HUD.hideAnimated(true,afterDelay:duration ??
2)

hud = HUD

}

/**

显示纯文字提示信息

- parameter hint: 显示在哪个View上

- parameter hint: 提示信息

- parameter duration: 持续时间(不填的话,
默认两秒)

- parameter yOffset: y上的偏移量

*/

func showHint(view:
UIView, hint: String, duration:
Double?, yOffset:CGFloat?) {

let HUD =
MBProgressHUD(view: view)

view.addSubview(HUD)

HUD.userInteractionEnabled =
false

HUD.mode = .Text

HUD.label.text = hint

HUD.offset.y = yOffset ??
0

HUD.removeFromSuperViewOnHide =
false

HUD.showAnimated(true)

HUD.hideAnimated(true, afterDelay: duration ??
2)

hud = HUD

}

func hideHud() {

hud!.hideAnimated(true)

}

}

//

// UIButton+Extension.swift

// FlowerField

//

// Created by CJW on 17/6/5.

// Copyright © 2017年 cjw. All rights reserved.

//

import UIKit

extension UIButton {

convenience
init(title:String?,imageName:String?,target:AnyObject?,selectro:Selector?,font:UIFont?,titleColor:UIColor?)
{

self.init()

if
let imageN = imageName {

setImage(UIImage(named: imageN), forState: .Normal)

}

setTitleColor(titleColor, forState: .Normal)

titleLabel?.font = font

setTitle(title, forState: .Normal)

if
let sel = selectro {

addTarget(target, action: sel, forControlEvents: .TouchUpInside)

}

}

}

//

// UIColor+Extension.swift

// FlowerField

//

// Created by CJW on 17/6/5.

// Copyright © 2017年 cjw. All rights reserved.

//

import UIKit

extension UIColor {

/**

根据RGB生成颜色

- parameter r: red

- parameter g: green

- parameter b: blue

- returns: 颜色

*/

convenience
init(r:CGFloat,g:CGFloat,b:CGFloat){

self.init(red:r/255.0,green: g/255.0,blue:
b/255.0,alpha: 1.0)

}

/**

根据RGB生成颜色

- parameter r: red

- parameter g: green

- parameter b: blue

- parameter alpha: 透明度

- returns: 颜色

*/

convenience
init(r: CGFloat, g:
CGFloat, b: CGFloat, alpha:
CGFloat) {

self.init(red: r/255.0, green: g/255.0,
blue: b/255.0, alpha: alpha)

}

/**

生成灰色

- parameter gray: 灰色

- returns: 颜色

*/

convenience
init(gray: CGFloat) {

self.init(red: gray/255.0, green: gray/255.0,
blue: gray/255.0, alpha:
1)

}

}

//

// UIImage+Extension.swift

// FlowerField

//

// Created by CJW on 17/6/5.

// Copyright © 2017年 cjw. All rights reserved.

//

import UIKit

extension UIImage {

/// 改变图片的颜色

class
func imageWithColor(imageName:String,color:UIColor) ->
UIImage{

let image =
UIImage(named: imageName)

UIGraphicsBeginImageContext((image?.size)!)

let context =
UIGraphicsGetCurrentContext()

CGContextTranslateCTM(context,
0, (image?.size.height)!)

CGContextScaleCTM(context,
1.0, -1.0)

CGContextSetBlendMode(context, .Normal)

let rect =
CGRectMake(0,
0, (image?.size.width)!, (image?.size.height)!)

CGContextClipToMask(context, rect, image?.CGImage)

color.setFill()

CGContextFillRect(context, rect)

let newImage =
UIGraphicsGetImageFromCurrentImageContext()

UIGraphicsEndImageContext()

return newImage

}

}

//

// UITextField+Extension.swift

// FlowerField

//

// Created by CJW on 17/6/5.

// Copyright © 2017年 cjw. All rights reserved.

//

import UIKit

extension UITextField{

// 初始化的时候,
光标多出来一点间距,
原本在OC可以使用上面这个方法,
但是swift中貌似不行

convenience
init(frame: CGRect,isPlaceHolderSpace:Bool) {

self.init(frame:frame)

if isPlaceHolderSpace {

let space =
UIView(frame:CGRect(x:
0, y: 0, width:
10, height: 0))

leftView = space

leftViewMode = .Always

}

}

/// 判断当前的textfiled
的值是否为空

func isNil() ->
Bool {

if
text?.characters.count <
1{

return
true

}

return
false

}

}

//

// UILabel+Extension.swift

// FlowerField

//

// Created by CJW on 17/6/5.

// Copyright © 2017年 cjw. All rights reserved.

//

import UIKit

extension UILabel {

convenience
init(textColor: UIColor, font:
UIFont) {

self.init()

self.font = font

self.textColor = textColor

}

}

//

// NSObject+Extension.swift

// FlowerField

//

// Created by CJW on 17/6/5.

// Copyright © 2017年 cjw. All rights reserved.

//

import UIKit

extension NSObject {

///显示错误信息

func showErrorMessage(message:String){

//只有UIVIewhe UIViewController才显示错误信息

if
self.isKindOfClass(UIView.self)
|| self.isKindOfClass(UIViewController.self)
{

UIAlertView(title:
"花田小憩", message: message, delegate:
nil, cancelButtonTitle:
"好的").show()

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  extension Category