欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

一定要用屬性賦值當前的 observe 結果,沒有的話可能會造成 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)和使用場景,結合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結構
  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哈哈~

總結

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

相關文章

  • Swift中常量和變量的區(qū)別與聲明詳解

    Swift中常量和變量的區(qū)別與聲明詳解

    Swift語言同樣和Java和OC等語言一樣是同樣是需要聲明常量和變量的,下面就讓我們來學習一下Swift的常量和變量。這篇文章主要給大家介紹了關于Swift中常量和變量的區(qū)別與聲明的相關資料,需要的朋友可以參考下。
    2017-11-11
  • 深入解析Swift代理模式

    深入解析Swift代理模式

    委托(代理)是一種設計模式,它允許類或結構體將一些需要它們負責的功能交由(委托)給其他的類型。下面這篇文章主要介紹了Swift代理模式的相關資料,文章開始先介紹了Objective-C相關的內容,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • Swift 4最全的新特性詳細解析(推薦)

    Swift 4最全的新特性詳細解析(推薦)

    Swift 4 在 Swift 3 的基礎上,提供了更強大的穩(wěn)健性和穩(wěn)定性。所以下面這篇文章就來給大家總結介紹關于Swift4新特性的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-11-11
  • 因為一個Crash引發(fā)對Swift構造器的思考分析

    因為一個Crash引發(fā)對Swift構造器的思考分析

    這篇文章主要給大家介紹了關于因為一個Crash引發(fā)對Swift構造器的思考分析,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用Swift具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-10-10
  • Swift使用編解碼庫Codable的過程詳解

    Swift使用編解碼庫Codable的過程詳解

    Codable 是 Swift 引入的全新的編解碼庫,使開發(fā)者更方便的解析JSON 或 plist 文件,支持枚舉、結構體和類,這篇文章主要介紹了Swift使用編解碼庫Codable,需要的朋友可以參考下
    2023-09-09
  • Swift語言實現(xiàn)地圖坐標彈跳動畫

    Swift語言實現(xiàn)地圖坐標彈跳動畫

    這篇文章主要介紹了用Swift語言實現(xiàn)地圖坐標彈跳動畫的方法主要應用iOS7來實現(xiàn)此功能,需要的朋友可以參考下
    2015-07-07
  • Swift并發(fā)系統(tǒng)并行運行多個任務使用詳解

    Swift并發(fā)系統(tǒng)并行運行多個任務使用詳解

    這篇文章主要為大家介紹了Swift并發(fā)系統(tǒng)并行運行多個任務使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Swift實現(xiàn)3D輪播圖效果

    Swift實現(xiàn)3D輪播圖效果

    這篇文章主要為大家詳細介紹了Swift實現(xiàn)3D輪播圖效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Swift教程之下標詳解

    Swift教程之下標詳解

    這篇文章主要介紹了Swift教程之下標詳解,本文講解了下標語法、下標的使用、下標選項等內容,需要的朋友可以參考下
    2015-01-01
  • Swift 3.0將UILabel數(shù)字顏色設置為紅色的方法

    Swift 3.0將UILabel數(shù)字顏色設置為紅色的方法

    這篇文章主要介紹了關于在Swift中將UILabel數(shù)字顏色設置為紅色的方法,文中給出了詳細的示例代碼,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03

最新評論