![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Swift
冰凉的枷锁.
这个作者很懒,什么都没留下…
展开
-
iOS 半弹窗效果 三段高度
半弹窗效果,可设置三段高度,可以上下拖拽原创 2022-09-26 18:10:39 · 1380 阅读 · 1 评论 -
Swift 定义常量
import Foundationimport UIKitlet ScreenBounds = UIScreen.main.boundslet ScreenWidth = UIScreen.main.bounds.size.widthlet ScreenHeight = UIScreen.main.bounds.size.heightlet ScaleWidth = ScreenW...原创 2019-09-19 14:50:38 · 1005 阅读 · 0 评论 -
Swift旋转动画
protocol RotationAnimatedProtocol { func startRotationAnimation() func stopRotationAnimation()}extension UIImageView: RotationAnimatedProtocol { func startRotationAnimation() { ...原创 2019-04-16 11:19:16 · 1033 阅读 · 0 评论 -
Swift TouchId 实现指纹登录
import Foundationimport LocalAuthenticationclass TouchIdManager: NSObject { @objc enum TouchIdResult: NSInteger { case success case failed case passwordNotSet ...原创 2018-12-12 11:39:57 · 843 阅读 · 0 评论 -
Swift 3DTouch开发 自定义ShortcutItems
3DTouch的分享菜单是上架后系统自动加上的,其他的菜单需要我们自定义。1.定义菜单项Modelimport Foundationenum ShortcutItem { case scan case send case receive case qrcode var type: String { switch self { ...原创 2018-12-12 11:36:16 · 630 阅读 · 0 评论 -
Swift清除APP缓存和WebView缓存
import Foundationimport WebKitclass ClearCacheManage { class func sizeOfAllCache() -> String { let cachePath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirector...原创 2018-12-11 18:38:34 · 2255 阅读 · 0 评论 -
Swift钥匙串KeychainSwift的使用
pod 'KeychainSwift', '12.0.0'import Foundationimport KeychainSwiftclass KeyChainManager { static let shared = KeyChainManager.init() private let keychain = KeychainSwift(keyPref...原创 2018-12-11 18:35:25 · 4839 阅读 · 0 评论 -
Swift数据库框架Realm的使用
GitHub地址:https://github.com/realm/realm-cocoa不同于SQLite和CoreData,Realm跨平台简单易用,并可以监听数据库的变化。1.使用CocoaPods导入Realmpod 'RealmSwift', '3.11.0'2.创建Realm.Configuration配置文件import Foundationimport RealmSw...原创 2018-12-11 17:46:20 · 2158 阅读 · 0 评论 -
Swift网络请求框架Moya的使用
Moya基于Alamofire进行封装,使用更加简单,维护更加方便。GitHub地址:https://github.com/Moya/Moya.git1.使用CocoaPods导入Moya:pod 'Moya', '~> 11.0.2'2.创建一个对象实现TargetType协议的方法import Foundationimport Moyaenum ScanServer {...原创 2018-12-11 17:12:13 · 4469 阅读 · 0 评论 -
Swift自定义UISlider的圆点,UISlider手势与侧滑返回手势冲突
import UIKitclass CustomSlider: UISlider { init() { super.init(frame: CGRect()) self.minimumValue = 0 self.maximumValue = 100 self.value = 0 self.min...原创 2018-12-11 11:44:22 · 1505 阅读 · 0 评论 -
Swift实现应用的多语言
import Foundationenum Language { case english case chinese}class LocalizationTool { static let shared = LocalizationTool() let defaults = UserDefaults.standard var b...原创 2018-12-13 11:46:47 · 3196 阅读 · 1 评论 -
Swift监听网络的变化
使用Alamofire的网络管理监听网络1.程序启动后,若无网则提示,来网后提示,网络变化提示并发出通知2.程序启动后,若有网则不提示,网络变化提示并发出通知import UIKitimport Alamofireenum NetworkingStatus { case mobile case wifi case none var description...原创 2018-12-13 11:13:44 · 1319 阅读 · 0 评论 -
Swift获取应用和设备的信息
guard let infoDictionary = Bundle.main.infoDictionary else { return }应用名称let appDisplayName = infoDictionary["CFBundleDisplayName"] as? StringAPP版本号let appVersion = infoDictionary["CFBundleShortV...原创 2018-12-12 15:12:57 · 1501 阅读 · 0 评论 -
Swift调用相机和系统相册
首先需要在Info.plist文件中添加两个键值对 然后利用系统类UIImagePickerController调用相机相册,下面已经封装好了类,继承该类调用showImagePickerController()方法就会自动调用相机相册 github地址https://github.com/ColdChains/LAXImagePickerControllerimport UIKitclass原创 2017-04-05 10:55:09 · 1759 阅读 · 0 评论 -
Swift获取当前位置
首先在Info.plist文件中添加允许获取位置信息的键值对 使用系统类CLLocationManager获取位置信息,下面已经封装了一个类,调用getLocation方法即可直接获取到位置信息 github地址:https://github.com/ColdChains/LAXLocationManagerimport Foundationimport UIKitimport Core原创 2017-04-05 11:40:16 · 2203 阅读 · 3 评论 -
iOS用代码添加约束
用代码给view添加约束,跟在xib添加约束一样,只不过约束需要通过代码创建而已,需要注意约束是添加到哪个视图上,填加错了程序就会崩溃。Swift: NSLayoutConstraint.init(item: subView, attribute: .width, relatedBy: .equal, toItem: superView, attribute: .width, multiplie原创 2017-03-27 18:39:30 · 1376 阅读 · 0 评论 -
iOS KVC和KVO的使用
KVC:使用字符串来描述对象需要更改的属性,用来获取或修改对象的属性值。[Student setValue:@"1234" forKeyPath: @"card.no"];[Student valueForKeyPath:@"card.no"]KVO是一种非常重要的机制,用来监听对象属性的变化。//1.添加观察者[stu addObserver:self forKeyPath:@"frame"原创 2017-03-24 14:59:30 · 313 阅读 · 0 评论 -
Swift将图片保存到沙盒下
将图片保存到沙盒下,首先获取沙盒路径,追加图片名称,将图片转换成NSData类型,写到文件里。 persent参数:图片质量参数,该值越大,表示图片越清晰,图片文件也就越大//保存图片至沙盒 private func saveImage(currentImage: UIImage, persent: CGFloat, imageName: String){ if let i原创 2017-04-05 11:53:39 · 9785 阅读 · 0 评论 -
Swift给系统的类扩展属性
OC的类别和扩展一般用来给类扩展方法,但有时我们需要给系统的类加一个额外的属性,这需要用到runtime机制。 Runtime是一套底层的C语言API(包含强大的C语言数据类型和函数)OC代码都是基于Runtime实现的,即编写的OC代码最终都会转成Runtime的代码 Runtime的作用: 1、获取类的私有变量 2、动态产生类,成员变量和方法 3、动态修改类,成员变量和方法 4、对换原创 2017-03-15 15:25:12 · 4070 阅读 · 0 评论 -
iOS OC/Swift懒加载
懒加载的优点: 不需将对象的实例化写到viewDidLoad,可以简化代码,增强代码的可读性 需要的时候初始化内存,对内存开销较小,节省内部资源 对象的实例化在getter方法中,各司其职,降低耦合性一、OC中懒加载的写法: 首先定义一个属性 在.m文件里重写getter方法 二、Swift中懒加载的写法:使用lazy关键字 (在Swift 存储属性必须初始化以确认类型,或者用可选类型原创 2017-03-09 16:39:50 · 319 阅读 · 0 评论 -
Swift怎么定义宏
在Swift中,define和let都可以定义常量一、define定义常量: 首先需要创建桥接文件,创建方式 http://blog.csdn.net/qq_25639809/article/details/60878785 然后再创建一个头文件 1.选中工程,点击New File ->iOS-> Header File; 2.点击Next,为文件命名; 3.点击Create;原创 2017-03-09 14:13:23 · 1399 阅读 · 0 评论 -
Swift关键字defer
defer 里的代码会在函数 return 之前执行,无论函数是从哪个分支 return的,包括有try catch的情况。例如defer { print("defer")}if sign { print("true")} else { print("false")}do { print("do&qu原创 2018-12-14 13:54:03 · 1066 阅读 · 0 评论 -
Swift guard let 的使用
guard let的意思与if let的意思是一样的,都是针对于可选类型进行解包,使用guard let可以是代码更加清晰易读。例如let dictionary: Dictionary<String, Any>? = ["data": ["book" : ["id" : "1"]]]if let dict = dictionary { if let data = dict...原创 2018-12-14 14:09:34 · 4362 阅读 · 0 评论 -
Swift生成二维码、通过Color生成Image
import UIKitextension UIImage { class func createQRCodeImage(content: String, size: CGSize) -> UIImage { let stringData = content.data(using: String.Encoding.utf8) ...原创 2018-12-17 11:21:55 · 575 阅读 · 0 评论 -
Swift扩展UIView:增加width height属性
import UIKitextension UIView { var x: CGFloat { get { return frame.origin.x } set(newValue) { var tempFrame: CGRect = frame tempFrame.origin.x = n...原创 2018-12-17 11:10:12 · 2044 阅读 · 0 评论 -
Swift添加CAGradientLayer渐变色背景颜色
渐变色的简单实现let gradientLayer = CAGradientLayer()gradientLayer.frame = self.view.boundsgradientLayer.colors = [UIColor(hex: "ffffff").cgColor, UIColor(hex: "000000").cgColor]view.layer.addSublayer(gra...原创 2018-12-17 11:03:09 · 1808 阅读 · 0 评论 -
Swift自定义UIColor
import Foundationimport UIKitextension UIColor { convenience init(hex: String) { self.init(hex: hex, alpha: 1) } convenience init(hex: String, alpha: CGFloat) { ...原创 2018-12-14 18:23:36 · 849 阅读 · 0 评论 -
Swift获取当前时间
extension Date { static func getCurrentTime() -&gt; Int64 { let now = Date() let timeInterval: TimeInterval = now.timeIntervalSince1970 return Int64(timeInterval) ...原创 2018-12-14 18:12:25 · 2072 阅读 · 0 评论 -
Swift Double向上取整和向下取整、Double转Int/String
floor()函数:向下取整,取小于等于这个数的最大整数ceil()函数:向上取整,取大于等于这个数的最小整数import Foundationextension Double { func intValue() -&amp;gt; Int { return Int(self) } func stringIntValue() -&amp;gt; String { ...原创 2018-12-14 18:06:51 · 6989 阅读 · 0 评论 -
Swift String通过下标获取子串、计算字符串的宽高、16进制转10进制、String转换为AttributedString、使用正则验证合法性
extension String { func index(from: Int) -&amp;amp;gt; Index { return self.index(startIndex, offsetBy: from) } func substring(from: Int) -&amp;amp;gt; String { let fromIndex = index(from: ...原创 2018-12-14 17:43:21 · 663 阅读 · 0 评论 -
Swift关键字where
where : 用于条件判断let point = (1, -1) switch point { case let (x, y) where x == y: print("x == y")case let (x, y) where x > y: print("x > y")case let (x, y) where x < y: ...原创 2018-12-14 17:21:17 · 666 阅读 · 0 评论 -
Swift关键字final、typealias、mutating、convenience
final使用场景:权限控制,也就是说这个类或方法不希望被继承和重写final class Book {}final func method() {}typealias: 为此类型声明一个别名.和 typedef类似typealias TestString = Stringlet testStr = TestString(format: "%d", 1)print(testStr)...原创 2018-12-14 17:15:13 · 215 阅读 · 0 评论 -
Swift AVPlayer的使用
let player = AVPlayer.init()var playerLayer: AVPlayerLayer!var liveChatManager = LiveChatManager.init()let playItem = AVPlayerItem.init(url: URL.init(string: roomInfo["hls_url"] as! String)!)player.原创 2017-04-24 14:42:01 · 1013 阅读 · 0 评论 -
Swift数组的sort、filter、forEach、map等方法,$的使用
swift自动为闭包提供参数名缩写功能,可以直接通过$0和$1等来表示闭包中的第一个第二个参数,并且对应的参数类型会根据函数类型来进行判断。并且in关键字也可以省略,只写函数体就可以了。例如arr.sorted { (a, b) in return a < b }相当于arr.sorted { $0 < $1 }1.sort:数组排序例如let arr = ...原创 2018-12-14 15:16:48 · 5121 阅读 · 0 评论 -
Swift创建桥接文件
在使用Swift编程时,往往我们会用到OC的文件,需要使用其内的方法来满足我们的需求,所以我们就要使用swift与oc的桥接文件,来引入oc中的头文件,至此来调用oc中的方法,满足我们在Swift编程下的需求。 同样适用OC编程时也可以加入桥接文件适用Swift文件。桥接文件的创建有两种方式,以Swift项目为例:一、之前没创建过oc的类将一个OC的文件直接拖进Swift工程,这是会出来一个提示原创 2017-03-08 18:49:40 · 7299 阅读 · 0 评论