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