UIView:
添加View的x,y,width,height,centerX,centerY,maxY,maxX属性
import UIKit
// 给UIView扩展一些方法
extension UIView {
var x :CGFloat {
set{
var rect = self.frame
rect.origin.x = newValue
self.frame = rect
}
get{
return self.frame.origin.x
}
}
var y :CGFloat {
set{
var rect = self.frame
rect.origin.y = newValue
self.frame = rect
}
get{
return self.frame.origin.y
}
}
var width :CGFloat {
set{
var rect = self.frame
rect.size.width = newValue
self.frame = rect
}
get{
return self.frame.size.width
}
}
var height :CGFloat {
set{
var rect = self.frame
rect.size.height = newValue
self.frame = rect
}
get{
return self.frame.size.height
}
}
var centerX :CGFloat {
set{
var center = self.center
center.x = newValue
self.center = center
}
get{
return self.center.x
}
}
var centerY :CGFloat {
set{
var center = self.center
center.y = newValue
self.center = center
}
get{
return self.center.y
}
}
// 获取最大y值
var maxY :CGFloat {
get{
return self.frame.maxY
}
}
// 获取最大x值
var maxX :CGFloat {
get{
return self.frame.maxX
}
}
}
UIDevice
APP相关信息:应用的版本,应用的名称
设备相关:获取设备的型号,设备UUID,获取设备名称(如iPhone:王伟的iPhone),系统版本号(iPhone,ipad,电视)的具体型号、手机电量
import UIKit
// 获取App相关的信息
let _infoDic = Bundle.main.infoDictionary
extension UIDevice {
// MARK: - App相关
// 获取App的版本号
var appVersion :String {
guard let infoDic = _infoDic else {
return "获取APP版本号失败"
}
guard let appVersion = infoDic["CFBundleShortVersionString"] as? String else {
return "获取APP版本号失败"
}
return appVersion
}
// 获取App的build版本
var appBuildVersion :String {
guard let infoDic = _infoDic else {
return "获取APP版本号失败"
}
guard let appBuildVersion = infoDic["CFBundleVersion"] as? String else {
return "获取APP版本号失败"
}
return appBuildVersion
}
// 获取App的名称
var appName :String {
guard let infoDic = _infoDic else {
return "获取APP版本号失败"
}
guard let appName = infoDic["CFBundleDisplayName"] as? String else {
return "获取APP版本号失败"
}
return appName
}
// MARK: - 设备相关
var appBatteryLevel :String {
return "\(UIDevice.current.batteryLevel)"
}
// 获取设备的型号
var deviceModel :String {
return UIDevice.current.model
}
// 获取设备UUID
var deviceUUID :String {
guard let UUID = UIDevice.current.identifierForVendor?.uuidString else {
return "获取设备唯一标识失败"
}
return UUID
}
// 获取设备名称(如iPhone:王伟的iPhone)
var deviceName :String {
return UIDevice.current.name
}
// 获取系统版本号
var sysVersion :String {
return UIDevice.current.systemVersion
}
// 获取iPhone、ipad、TV、的具体型号
var modelName: String {
var systemInfo = utsname()
uname(&systemInfo)
let machineMirror = Mirror(reflecting: systemInfo.machine)
let identifier = machineMirror.children.reduce("") { identifier, element in
guard let value = element.value as? Int8, value != 0 else { return identifier }
return identifier + String(UnicodeScalar(UInt8(value)))
}
switch identifier {
case "iPod5,1": return "iPod Touch 5"
case "iPod7,1": return "iPod Touch 6"
case "iPhone3,1", "iPhone3,2", "iPhone3,3": return "iPhone 4"
case "iPhone4,1": return "iPhone 4s"
case "iPhone5,1", "iPhone5,2": return "iPhone 5"
case "iPhone5,3", "iPhone5,4": return "iPhone 5c"
case "iPhone6,1", "iPhone6,2": return "iPhone 5s"
case "iPhone7,2": return "iPhone 6"
case "iPhone7,1": return "iPhone 6 Plus"
case "iPhone8,1": return "iPhone 6s"
case "iPhone8,2": return "iPhone 6s Plus"
case "iPhone8,4": return "iPhone SE"
case "iPhone9,1": return "iPhone 7"
case "iPhone9,2": return "iPhone 7 Plus"
case "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4":return "iPad 2"
case "iPad3,1", "iPad3,2", "iPad3,3": return "iPad 3"
case "iPad3,4", "iPad3,5", "iPad3,6": return "iPad 4"
case "iPad4,1", "iPad4,2", "iPad4,3": return "iPad Air"
case "iPad5,3", "iPad5,4": return "iPad Air 2"
case "iPad2,5", "iPad2,6", "iPad2,7": return "iPad Mini"
case "iPad4,4", "iPad4,5", "iPad4,6": return "iPad Mini 2"
case "iPad4,7", "iPad4,8", "iPad4,9": return "iPad Mini 3"
case "iPad5,1", "iPad5,2": return "iPad Mini 4"
case "iPad6,7", "iPad6,8": return "iPad Pro"
case "AppleTV5,3": return "Apple TV"
case "i386", "x86_64": return "Simulator"
default: return identifier
}
}
}
UIBarButtonItem:
自定义返回一个UIBarButtonItem
import UIKit
extension UIBarButtonItem {
public class func itemWithTarget(target: AnyObject ,
action: Selector ,
image: String? ,
title: String? ,
selectImage: String?) -> UIBarButtonItem {
let buttonItem :UIBarButtonItem = UIBarButtonItem()
// 添加自定义的View
buttonItem.customView = buttonWithTarget(target: target, action: action, image: image, title: title, selectImage: selectImage)
return buttonItem
}
public class func buttonWithTarget(target: AnyObject ,
action: Selector ,
image: String? ,
title: String? ,
selectImage: String?) -> UIButton {
let button :UIButton = UIButton()
// 默认图片
if let imageStr = image {
if let image = UIImage(named:imageStr) {
button.setImage(image, for: UIControlState.normal)
}
}
// highlighted图片
if let selectImageStr = selectImage {
if let selectImage = UIImage(named:selectImageStr) {
button.setImage(selectImage, for: UIControlState.highlighted)
}
}
// 设置按钮中图片的尺寸
button.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
button.addTarget(target, action: action, for: .touchUpInside)
button.titleLabel?.font = UIFont.systemFont(ofSize: 10)
// 设置为的内边距
button.titleEdgeInsets = UIEdgeInsetsMake(button.bounds.height * 0.5, 0, 0, 0)
return button
}
}
网友评论