美文网首页
Swift 小结

Swift 小结

作者: 韩小醋 | 来源:发表于2017-11-24 15:51 被阅读12次

Selector

Selector("xxx") 习惯用来调用私有api,不做编译检查
#selector(self.action(id:,id:)

Extension

extension Object {
    
    //用结构体创建关联key ,可以有效避免 命名空间的污染
    private struct AssociatedKeys {
        static var firstKey = "firstKey"
    }
    
    var firstProperty: Bool? {
        set {
            objc_setAssociatedObject(self, &AssociatedKeys.firstKey, NSNumber.init(value: newValue!), objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
        }
        get {
            return (objc_getAssociatedObject(self, &AssociatedKeys.firstKey) as? NSNumber)?.boolValue
        }
    }
}
extension String {
    
    func pinYin() -> String {
        let mutableString = NSMutableString.init(string: self)
        //转换成拉丁字符
        CFStringTransform(mutableString, nil, kCFStringTransformToLatin, false)
        //去除音标
        CFStringTransform(mutableString, nil, kCFStringTransformStripDiacritics, false)
        let string = String(mutableString)
        //去除空格
        return string.replacingOccurrences(of: " ", with: "")
    }
}

CoreText

CTFrame
CTLine
CTRun: 是每一个相同属性字符串 ,但是不会隔行。

 // 获得要绘制区域的高度
let framesetter = CTFramesetterCreateWithAttributedString(mutableStr)
let restrictSize = CGSize.init(width: SCREEN_WIDTH, height: CGFloat.greatestFiniteMagnitude)
let coreTextSize = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0, 0) , nil, restrictSize, nil)    

Core Graphics

绘制图片
绘制文本
混合图层绘制
渐变绘制
上下文变换

linkView.png

Runloop

    
    func addObserver() {
        let runloop = CFRunLoopGetCurrent()
        let runMode = CFRunLoopMode.defaultMode
        
        let observer = CFRunLoopObserverCreateWithHandler(kCFAllocatorDefault, CFRunLoopActivity.beforeWaiting.rawValue, true, 0) { (observer, _) in
            if (true) {//达到一定的条件就移除此监听
                CFRunLoopRemoveObserver(runloop, observer, runMode)
            }
            self.perform(#selector(self.timeAction), on: Thread.main, with: nil, waitUntilDone: false, modes: [RunLoopMode.defaultRunLoopMode.rawValue])
        }
        CFRunLoopAddObserver(runloop, observer, runMode)
    }
    
    @objc func timeAction() {}

相关文章

  • swift基础小结1

    swift基础小结 for 循环OC与Swift对比 While循环与downhill循环 OC与swift使用的...

  • swift-循环

    循环 OC风格的 for Swift风格的 for 阶段性小结Swift 中使用 in 关键字标示循环的范围0.....

  • Swift3.0 函数闭包与 Block

    最近新接手了一个Swift项目,花点时间做点小结,以做记录我的博客链接 Swift中定义一个基本函数 Swift ...

  • 3.Swift-循环

    OC风格的 for Swift风格的 for 阶段性小结Swift 中使用 in 关键字标示循环的范围0..<10...

  • Swift开发体验

    代码实现 对比与小结 Swift 文件都是以 .swift 结尾 没有 main.m 文件 代码全部都放在大括号里...

  • Swift 小结

    Selector Extension CoreText CTFrameCTLineCTRun: 是每一个相同属性字...

  • Swift小结

    懒加载 格式 lazy var 变量: 类型 = { 创建变量代码 }() 以 lazy var 开头,闭包末尾跟...

  • Swift小结

    基本语法: 定义变量和常量: let 和 var常量和变量的命名:你可以使用任何你喜欢的字符作为常量和变量名,包括...

  • Swift小结

    不同的字符可能会占用不同数量的内存空间,所以要知道Character的确定位置,就必须从String开头遍历每一个...

  • Swift小结

    //TODO: 用于标记未完成的任务// FIXNE: 用于标记待修复的问题//#warning("todo") ...

网友评论

      本文标题:Swift 小结

      本文链接:https://www.haomeiwen.com/subject/blxfbxtx.html