查看详情

Swift 和 Kotlin 获取代码执行行数和文件名

如果我们需要需要实现一个类似打印当前函数调用的文件名和函数的化,我们需要借助一些类库。 在 swift 中我们可以借助 #file 和 #line 来实现数据获取/。 类似 public static func log(file: String = #file, line: Int = #line) { } 而在 Android 我们需要借助 Thread 来实现 var str = "" try { val filename = Thread.currentThread().stackTrace[your_trace_index].fileName val line = Thread.currentThread().stackTrace[your_trace_index].lineNumber str = " $filename [l$line]" } catch (err: 详情 »

查看详情

Swift 使用 Observe 监测页面滚动

Swift 以前是通过 addObserver 来实现对某个属性的变化监听,而最新的变化,书写起开更加方便。 observer = test.observe(\.field, options: [.new, .initial]) { (object, change) in print(change) } 一定要用属性赋值当前的 observe 结果,没有的话可能会造成 change 不生效。 对 UIScrollView 的滚动监听,我们可以使用 UIScrollViewDelegate extension UIScrollViewDelegate{ func scrollViewDidScroll(scrollView: UIScrollView){ //do something } } 这里推荐使用 Observe 比较方便的是可以进行模块的逻辑的拆分,我们只需在自己的组件里面进行监听 class ComponetView: UIVIew { private var observation: NSKeyValueObservation? init(targetView: UIView) { observation = targetView.observe(\.contentOffset, options: 详情 »