![](https://img-blog.csdnimg.cn/20191007092117660.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Swift
>>> Eugene >>>
OC / Swift / Java
展开
-
iOS Swift 实现渐变色+封装 CAGradientLayer
不说废话,线上效果和调用效果:实现随意View对象实例的简单创建、去除、修改渐变色import UIKitclass TestViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() configure() } ...原创 2019-11-22 01:04:59 · 910 阅读 · 0 评论 -
Swift 常用功能方法封装 2
弹窗选择// 弹窗选择func alertSheet(_ title: String?, _ message: String?, list: [String], result: @escaping ((_ index: Int) -> ())) { let current = UIViewController.current() let alert = UIAlert...原创 2019-10-14 00:21:42 · 286 阅读 · 0 评论 -
Swift 常用功能方法封装 1
不用加班是有原因的,互相借鉴省事(偷懒)的小技巧,欢迎留言。因为Swift的函数在.swift文件中是全局可见的,所以只需要创建一个工具文件存放所有extension就很方便管理一些小函数和拓展。1.获取数组的第二个节点或者第三个节点extension Array { var second: Element? { get { return s...原创 2019-10-14 00:11:27 · 493 阅读 · 0 评论 -
Swift 扩展XIB面板
使用Inspectable注解可以把一些属性的设置增加到XIB的面板中//inspectableextension UIView { @IBInspectable var cornerRadius: CGFloat { get { return layer.cornerRadius } set { ...原创 2019-10-14 00:10:41 · 247 阅读 · 0 评论 -
Swift 安全的使用Timer
很多时候在Viewcontroller直接用属性引用Timer会造成引用循环(timer会对target/vc进行强引用,vc对timer强引用),下面的方式可以用Block的形式解除引用循环,避免内存泄漏。// 破除timer引用循环public typealias TimerExcuteClosure = @convention(block) () -> ()extension ...原创 2019-10-14 00:08:02 · 313 阅读 · 0 评论 -
Swift 左对齐的CollectionFlowLayout
//左对齐的flowlayoutclass LeftAlignedCollectionViewFlowLayout: UICollectionViewFlowLayout { override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { ...原创 2019-10-13 23:55:58 · 664 阅读 · 0 评论 -
Swift 生成图形验证码
效果:class ImageCodeVerification: NSObject { static func create(_ frame: CGRect) -> (obj: UIView, code: String) { let code = getCode() let view = getView(frame, code) r...原创 2019-10-13 23:54:01 · 475 阅读 · 0 评论 -
Swift keychain的使用
class KeychainManager: NSObject { // TODO: 创建查询条件 class func createQuaryMutableDictionary(identifier:String)->NSMutableDictionary { // 创建一个条件字典 let keychainQuaryMutableDict...原创 2019-10-13 23:41:45 · 1185 阅读 · 0 评论 -
Swift 优化OC接口 NS_REFINED_FOR_SWIFT
在Swift中调用OC的接口有时发现并不符合Swift的语法规范或者使用起来会比较别扭,这个时候可以使用NS_REFINED_FOR_SWIFT宏定义来对OC的接口进行升级改造。假设OC中有类文件和接口如下:.h文件@interface TestOC : NSObject- (void)changeId:(int)uid name:(NSString *)name address:(NS...原创 2019-10-08 13:27:35 · 518 阅读 · 0 评论 -
Swift 重命名OC接口 NS_SWIFT_NAME
使用宏定义NS_SWIFT_NAME为OC接口重命名用法:为类和代理重命名时它作为一个前缀,其他类型(属性、枚举、别名)时作为后缀NS_SWIFT_NAME(Sandwich.Preferences)@interface SandwichPreferences : NSObject@property BOOL includesCrust NS_SWIFT_NAME(isCrusty);...翻译 2019-10-08 11:43:23 · 1517 阅读 · 0 评论 -
Swift 自定义结构体和类应该遵循的通用协议
Equatable & Hashable使用自定义类型对程序中的数据进行建模时,可能经常需要检查两个值是否相同或不同,或者值列表中是否包含特定值。 此功能以及将值存储在集合中或用作字典中的键的功能受两个相关的标准库协议Equatable和Hashable约束。你可以使用等于(==)和非等于(!=)运算符比较等于类型的实例。可散列类型的实例可以在数学上将其值减小为单个整数,集合和字典在...翻译 2019-10-07 15:58:00 · 609 阅读 · 0 评论 -
Swift中结构体(structures)和类(classes)的选择
在Swift中结构体和类有很多相似的特性,结构体似乎是swift中一个非常常用的数据类型,而类在oc中是最习惯使用的类型,开发中对类和结构体如何抉择呢?首选结构体尽量使用结构体来描述你的数据结构swift中的结构体有很多其他语言的结构体所不具备的:可以包含储存属性、计算属性、方法;遵循协议;Swift的标准库和Foundation的基本类型大量使用了结构体,如数字、字符串、数组、字典结构体...原创 2019-10-07 12:06:51 · 292 阅读 · 0 评论