-
Notifications
You must be signed in to change notification settings - Fork 3
/
UIDeviceExtension.swift
161 lines (121 loc) · 5.31 KB
/
UIDeviceExtension.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
import UIKit
extension UIDevice {
//Device Code : iPhone7,2, iPhone6,1, ...
public var deviceCode: String {
var sysInfo: [CChar] = Array(count: sizeof(utsname), repeatedValue: 0)
let code = sysInfo.withUnsafeMutableBufferPointer {
(inout ptr: UnsafeMutableBufferPointer<CChar>) -> String in
uname(UnsafeMutablePointer<utsname>(ptr.baseAddress))
//let machinePtr = advance(ptr.baseAddress, Int(_SYS_NAMELEN * 4))
let machinePtr = ptr.baseAddress.advancedBy(Int(_SYS_NAMELEN * 4))
return String.fromCString(machinePtr)!
}
return code
}
// Device Family : iPhone,iPad, ...
public var deviceFamily: String {
return UIDevice.currentDevice().model
}
//Device Model : iPhone 6, iPhone 6 plus, iPad Air, ...
public var deviceModel: String {
var model : String
let deviceCode = UIDevice().deviceCode
switch deviceCode {
case "iPhone4,1": model = "iPhone 4s"
case "iPhone5,1", "iPhone5,2": model = "iPHONE 5"
case "iPhone5,3", "iPhone5,4": model = "iPHONE 5c"
case "iPhone6,1", "iPhone6,2": model = "iPHONE 5s"
case "iPhone7,2": model = "iPHONE 6 / 6s"
case "iPhone7,1": model = "iPHONE 6 PLUS / 6s PLUS"
case "iPhone8,2": model = "iPHONE 6 PLUS / 6s PLUS"
case "iPhone8,1": model = "iPHONE 6 / 6s"
case "i386", "x86_64": model = "iPHONE 6 / 6s"
default: model = "iPHONE 6 / 6s"
}
return model
}
//Device Jailbreaked or not
public var deviceJailed: Bool {
let path : NSString = "/Applications/Cydia.app"
let fileExists : Bool = NSFileManager.defaultManager().fileExistsAtPath(path as String)
return fileExists
}
//Device iOS Version : 8.1, 8.1.3, ...
public var deviceIOSVersion: String {
return UIDevice.currentDevice().systemVersion
}
public func applicationVersion() -> String {
return (NSBundle.mainBundle().infoDictionary?["CFBundleShortVersionString"]) as! String
}
public func applicationBuildVersion() -> String {
return (NSBundle.mainBundle().infoDictionary?["CFBundleVersion"]) as! String
}
public func documentPath() -> String {
let array : Array<String> = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
return array[0]
}
public func cachesPath() -> String {
let array : Array<String> = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true)
return array[0]
}
public func gotoItunesForDownloadApp(appId : String) {
let downloadUrl = "http://itunes.apple.com/app/id\(appId)?mt=8"
UIApplication.sharedApplication().openURL(NSURL(string: downloadUrl)!)
}
//Device Screen Width and Height
class public var deviceScreenWidth: CGFloat {
let screenSize: CGRect = UIScreen.mainScreen().bounds
let width = screenSize.width;
return width
}
class public var deviceScreenHeight: CGFloat {
let screenSize: CGRect = UIScreen.mainScreen().bounds
let height = screenSize.height;
return height
}
//Device Orientation String
public var deviceOrientationString: String {
var orientation : String
switch UIDevice.currentDevice().orientation{
case .Portrait:
orientation="Portrait"
case .PortraitUpsideDown:
orientation="Portrait Upside Down"
case .LandscapeLeft:
orientation="Landscape Left"
case .LandscapeRight:
orientation="Landscape Right"
case .FaceUp:
orientation="Face Up"
case .FaceDown:
orientation="Face Down"
default:
orientation="Unknown"
}
return orientation
}
// is Device Landscape, is Portrait
public var isDevicePortrait: Bool {
return UIDevice.currentDevice().orientation.isPortrait
}
public var isDeviceLandscape: Bool {
return UIDevice.currentDevice().orientation.isLandscape
}
class func imageWithColor(color:UIColor) -> UIImage{
// 描述矩形
let rect:CGRect = CGRectMake(0, 0, 1, 1.0)
// 开启位图上下文
UIGraphicsBeginImageContext(rect.size);
// 获取位图上下文
let context = UIGraphicsGetCurrentContext()
// 使用color演示填充上下文
CGContextSetFillColorWithColor(context, color.CGColor)
// 渲染上下文
CGContextFillRect(context, rect);
// 从上下文中获取图片
let theImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()
// 结束上下文
UIGraphicsEndImageContext();
return theImage;
}
}