ios - Why is "print into console" much faster than ".text into label " -
i´m trying display cadence , pace data of cmpedometer
. when run application phone attached, writes output of data through print("...")
function console, takes multiple turns until displays data in uilabel
. how can data fast possible can use them?
best, zack
import uikit import coremotion class viewcontroller: uiviewcontroller { let pedometer = cmpedometer() @iboutlet weak var pacelabel: uilabel! @iboutlet weak var cadencelabel: uilabel! override func viewdidload() { super.viewdidload() guard cmpedometer.iscadenceavailable() && cmpedometer.ispaceavailable() else{ print("pace , cadence data not available") return } let oneweekago = nsdate(timeintervalsincenow: -(7 * 24 * 60 * 60)) pedometer.startupdates(from: oneweekago date) {data, error in guard let pdata = data , error == nil else{ return } //the current pace of user, measured in seconds per meter. (1 step = 83cm?) if let pace = pdata.currentpace{ print("pace = \(pace)") self.pacelabel.text = "pace = \(round(double(pace))*10/10)" } //the rate @ steps taken, measured in steps per second. if let cadence = pdata.currentcadence{ self.cadencelabel.text = "cadence = \(cadence))" print("cadence = \(cadence)") } }// -----------------oneweekago }// -----------------viewdidload override func didreceivememorywarning() { super.didreceivememorywarning() } }//-------------------- uiviewcontroller
the update block called on background thread , need update ui on main thread. wrap ui update calls in dispatch main thread:
dispatch.main.async { //the current pace of user, measured in seconds per meter. (1 step = 83cm?) if let pace = pdata.currentpace{ print("pace = \(pace)") self.pacelabel.text = "pace = \(round(double(pace))*10/10)" } //the rate @ steps taken, measured in steps per second. if let cadence = pdata.currentcadence{ self.cadencelabel.text = "cadence = \(cadence))" print("cadence = \(cadence)") } } }
Comments
Post a Comment