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()
}
}
}
// 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()
}
}
}
相关文章推荐
- Swift中用到extension的一些基本的扩展功能讲解
- 20.Swift-扩展
- Swift2学习:Swift概览6-协议和扩展
- ios的swift 与Object-c之后使用的一些变化
- 对一些对象进行方法扩展
- WebBrower的应用和功能扩展中的一些技术细节
- Swift3中方法可变参数语法的一些改变
- Objective-C和Swift混编的一些经验
- 一些扩展kmp的总结
- 地磅称量系统之(53)在封装对象的类库中实现包括IDataErrorInfo接口提供的所有方法和并且扩展对异常具有添加和删除功能的基本业务对象基类
- 读取项目中classpath下的路径以及一些扩展
- 【Swift】中的一些关键字
- 苹果新的编程语言 Swift 语言进阶(十四)--扩展
- Memcache服务器端+Redis服务器端+PHP Memcache扩展+PHP Memcached扩展+PHP Redis扩展+MemAdmin Memcache管理工具+一些概念(更新中)
- 在xcode 6.4 中使用swift和object-c混合编程,同时通过cocoapods进行管理的一些问题和解决办法
- debian下安装php的一些扩展geoip,mongo,redis,libevent,proctitle,inotify,pcntl,uv,yaf
- ios深度解析之Swift(枚举,继承,协议,扩展)
- 一些swift进阶博客
- 最近学swift的一些记录
- 苹果新的编程语言 Swift 语言进阶(三)--基本运算和扩展运算