最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Swift 使用 Observe 監(jiān)測頁面滾動的實現(xiàn)方法

 更新時間:2020年05月19日 11:00:57   作者:jackpu  
這篇文章主要介紹了Swift 使用 Observe 監(jiān)測頁面滾動的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

Swift 以前是通過addObserver來實現(xiàn)對某個屬性的變化監(jiān)聽,而最新的變化,書寫起開更加方便。

observer = test.observe(\.field, options: [.new, .initial]) { (object, change) in
   print(change)
  }

一定要用屬性賦值當(dāng)前的 observe 結(jié)果,沒有的話可能會造成 change 不生效。

對 UIScrollView 的滾動監(jiān)聽,我們可以使用UIScrollViewDelegate

extension UIScrollViewDelegate{
 func scrollViewDidScroll(scrollView: UIScrollView){
  //do something
 }
}

這里推薦使用 Observe 比較方便的是可以進行模塊的邏輯的拆分,我們只需在自己的組件里面進行監(jiān)聽

class ComponetView: UIVIew {
	private var observation: NSKeyValueObservation?
	init(targetView: UIView) {
		observation = targetView.observe(\.contentOffset, options: [.new]) { [weak self] scrollView, change in
   // handle data contentOffset
  }
	}
}

附錄:Swift中實現(xiàn)Observable機制

今天給別人講個Observable的實現(xiàn)和使用場景,結(jié)合Observable-Swiftgithub:https://github.com/slazyk/Observable-Swift講了半天貌似還沒有特別明白,故寫了個簡易的實現(xiàn),講述了下Observable屬性監(jiān)控機制。

//: Playground - noun: a place where people can play

import UIKit
import Foundation

// MARK: - Observable
class Observable<T> {
  // 定義block結(jié)構(gòu)
  typealias Observer = T -> Void

  // 申明一個block,用于數(shù)據(jù)改變的執(zhí)行
  private var observer: Observer?

  // 數(shù)據(jù)發(fā)生變更,則通過observer告知
  var value: T {
    didSet {
      observer?(value)
    }
  }

  init(_ v: T) {
    value = v
  }

  func observe(observer: Observer?) {
    self.observer = observer
    observer?(value)
  }
}

// MARK: - People
struct PeopleModel {
  let firstName: Observable<String>
  let lastName: Observable<String>

  init(firstName: String, lastName: String) {
    self.firstName = Observable(firstName)
    self.lastName = Observable(lastName)
  }
}

// MARK: - Test

// test1
let people = PeopleModel(firstName: "sunny", lastName: "liu")
people.firstName.observe {
  newValue in
  print("firstName changed: \(newValue)")
}
people.lastName.observe {
  print("lastName changed: \($0)")
}
people.firstName.value = "sunny2"
people.lastName.value = "liu2"

// test2
class House {
  let lableHouseName = UILabel()

  init() {

  }

  var people: PeopleModel? {
    didSet {
      people?.firstName.observe{
        [unowned self] in
        self.lableHouseName.text = $0
      }
    }
  }
}

這樣貌似容易理解了,O(∩_∩)O哈哈~

總結(jié)

到此這篇關(guān)于Swift 使用 Observe 監(jiān)測頁面滾動的文章就介紹到這了,更多相關(guān)Swift 使用 Observe 監(jiān)測頁面滾動內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Swift調(diào)用Objective-C代碼

    Swift調(diào)用Objective-C代碼

    目前Swift語言所編寫的應(yīng)用才剛剛可以使用Xcode 6 GM版本提交,而Objective-C作為蘋果的主開發(fā)語言存在了很多年了。目前尚無成熟的Swift庫可用,所以當(dāng)前編寫應(yīng)用可以說基本離不開調(diào)用Objective-C代碼的情況。
    2014-09-09
  • switch實現(xiàn)一個兩數(shù)的運算代碼示例

    switch實現(xiàn)一個兩數(shù)的運算代碼示例

    這篇文章主要介紹了switch實現(xiàn)一個兩數(shù)的運算代碼示例,需要的朋友可以參考下
    2017-06-06
  • Swift編程中實現(xiàn)希爾排序算法的代碼實例

    Swift編程中實現(xiàn)希爾排序算法的代碼實例

    希爾排序是對插入排序的一種改進版本,算法本身并不穩(wěn)定,存在優(yōu)化空間,這里我們來講一下希爾排序的大體思路及Swift編程中實現(xiàn)希爾排序算法的代碼實例
    2016-07-07
  • Swift實現(xiàn)多個TableView側(cè)滑與切換效果

    Swift實現(xiàn)多個TableView側(cè)滑與切換效果

    這篇文章主要為大家詳細(xì)介紹了Swift實現(xiàn)多個TableView側(cè)滑與切換效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Swift里的值類型與引用類型區(qū)別和使用

    Swift里的值類型與引用類型區(qū)別和使用

    這篇文章主要介紹了Swift里的值類型與引用類型區(qū)別和使用,本文講解了值類型與引用類型的區(qū)別、如何選擇類型、什么時候該用值類型、什么時候該用引用類型等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • 詳細(xì)講解Swift中的類型占位符

    詳細(xì)講解Swift中的類型占位符

    類型占位符是swift5.6中引?的?個新功能,在處理稍微復(fù)雜的通?類型時,它可能真的很有用,這篇文章主要給大家介紹了關(guān)于Swift類型占位符的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • 詳解Swift 結(jié)構(gòu)體

    詳解Swift 結(jié)構(gòu)體

    這篇文章主要介紹了Swift 結(jié)構(gòu)體的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-09-09
  • SpringBoot3.0集成Redis緩存的實現(xiàn)示例

    SpringBoot3.0集成Redis緩存的實現(xiàn)示例

    緩存就是一個存儲器,常用 Redis作為緩存數(shù)據(jù)庫,本文主要介紹了SpringBoot3.0集成Redis緩存的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Swift 4中一些實用的數(shù)組技巧小結(jié)

    Swift 4中一些實用的數(shù)組技巧小結(jié)

    這篇文章主要給大家分享了關(guān)于Swift 4中一些實用的數(shù)組技巧,文中通過示例代碼介紹的介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用swift具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Swift使用enum抹平數(shù)組元素差異實例詳解

    Swift使用enum抹平數(shù)組元素差異實例詳解

    這篇文章主要為大家介紹了Swift使用enum抹平數(shù)組元素差異實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11

最新評論

陇川县| 任丘市| 台安县| 大同县| 喀喇沁旗| 资兴市| 淮南市| 霞浦县| 富锦市| 阿鲁科尔沁旗| 稻城县| 太谷县| 楚雄市| 漳州市| 泌阳县| 游戏| 大田县| 庄河市| 海淀区| 许昌县| 慈利县| 长沙县| 铜梁县| 吉首市| 东阿县| 汉川市| 长汀县| 宁海县| 林口县| 玉屏| 咸阳市| 镇远县| 祁东县| 同心县| 揭东县| 石棉县| 资中县| 平泉县| 恭城| 丹凤县| 左云县|