swift的一些基类的扩展

//

//  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()

        }

    }

}









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值