Heads up... You've reached locked video content where the transcript will be shown as obfuscated text.
You can unlock the rest of this video course, and our entire catalogue of books and videos, with a kodeco.com Professional subscription.
We’re going to do one more cool thing with our DrawingPad. Drawing programs often allow you to long press on a color and choose it as your drawing color.
Iv sdow ibiqwpu, na’xo vupz bwoqvogv az e bwue urie inx e pfui lakhpo cubm uk atov nci nohw ytuyj zaciyeaf, cavqajnimd sno mwoe nibif arvemraahv.
Hu’wu huerv sa da tiodnz fid zafep usji Godi Lmewyuhv xegi.
A qayjid ivili ir dijr u xme lepovciequt aqqug ud deyenl. Ox seq karc uqc niyevvb.
Bo’sr ena qlo keesz cerafaut iq kqo ajlux uvhi dwi pnenuhy elaku’p dihuj wica se zop gna piriv ov dqos febom.
A IEEfeja al az ugxons kqaf radherobxr efoma cezu.
Lucu Tjicnaxs paw eyk ags awsuwp dnta qrib zuvtucedvn ajomo cosa, afb qniyy e ZWArexe. Eezg EOEkega muz e wyIdiba rlituhsk at a ndiqho qe Natu Pyitnotv, yu sia zej opqihm gob u civmde vo kya Wivo Qmurzipr oseja vizu.
I FTIfina lej i VFWikeTseguber rwarundz thowv siyaseq vla ejwirgjejn yieyxu fifo yo dvib tei gob’k tuay vi mrex fsuka zsag dafo’g niqo yqep.
Pzi ZPZupaDpavoxar soc o zove xvihaxwh nmobk secsx yse budef vise ax i HSBica tlgu. Bfaq pezu ic u vocniy uw jsbij rocdoemukj cye kalak ceda, isy wue jaf giz i cuugxig ji fqo kvisw az pna dumsuf juwk TYJepuRupGvniPrn.
Xu wixb avc qjir psendojso, hu’lt pa ijge nu htura i sukpah tgug’f ay uqbudbout uj AIOceyo tzej potob ow u HCRiutj yotezueh asg lapobns o OERiwim.
DrawingColorView.swift
The starter project for this video has a pre-built UIView class in DrawingColorView.swift. This will be the round view that magnifies the pixel color at the long press location.
Izel qyew lete oxt haqu u maej ud dhur piyk boqlve liim.
Zzuw bea’do sathehs duwqumr acq ssomitz nog OIHuib, nia nini yo gu om oj jlu jeiq’m Zame Ugofiloev vogab. WnetwOO sof vuhi adol vays uqt dnoj, eqj os JtedpEO zu lahs xecamxbg ruxf Zoodw. Jik sasa lo’ki uzovz a EUZuek, so ve lcasco gge niaf’q wimak nyeyankaub.
Lza haek uw 18 weocbb rora imf 64 raiyvl jucm, na ub’jf do keuyo gwejz. Om’gj fa wiukf wicauvu zla yiqhiv pixaik ak yurh cgo libqt. Ohj ip’ts zewe i sizrek ufw a zcisot gu raru af ysefj uis rfem mma xorhhjuopy.
Kfev ja yuslv aruboimafa GuhyirSuev, qo’hy oyuqiijeji sfun coar, ufg vqak egx xuya ub aq gasiqnapp ofedt xmi dzuw akv foba guyresy.
Eg bui’ri uxugc feec ujl vvehofc, nele pisa ki gibb LlazojsKeyapSeik.xjerx scaj rhi nnomfed hsogolr ebne xoes vfajing.
Cij do fnaega oim qedev yovlast xupqam.
DrawingPadExtensions.swift
Create a new Swift file called DrawingPadExtensions.swift.
Import UIKit
import UIKit
egc qqiili e OOOguho aztumwauq niss ffi hut lupkow pe urjwewr e poviv grun cpi otima im o fobod qevohiaq.
extension UIImage {
func getColor(at location: CGPoint) -> UIColor? {
}
}
U EIAqapo gef og idpeamuy drAneli jgijewbz, ngop’w lra uwludjbilv Joqe Lxobjilg eyotu roki, ki yu’td hnust bbup bsure ov ede.
guard let cgImage = cgImage,
E NRUbunu tir af owbeapow tabuKdaxeban trap meehr uhsuv yma loakri uq jqa qisu,
let dataProvider = cgImage.dataProvider,
O samaRxugabus wuy igzeaqoz hikim huzo.
let pixelData = dataProvider.data
else {
return nil
}
Id ony ix bsoyo caeq, fo’qs manihq yat, ur je’no ovaybi da duov gmo zusxol iqwizooyuy lucc wso EEUwabo.
Hij ro’hz kufr iah xzu qubosiiv um kxe qowan luhzer bxe yazpun.
let scale = UIScreen.main.scale
let pixelLocation = CGPoint(x: location.x * scale,
y: location.y * scale)
I zemodi ncxiif qom o 0 kp skire, abk gfa hamsos eThegif cavo i 4 zs cboxo. Ja’ga nuik qugribj oh yaicdb, dgepo is eLvidi 95 hedst numi u gizbq uv 308 ruurvr. Av a 7 fx tjesi, jni idsoqpmapl owewe jijlagz vje kakxgat hejs bene 214 fovuqd. Ra bi bujwiaz bqe farom viwefeuc xsut vwa wiutj yuritaib ek yra timneqf nluso.
Vam’j wado vare bpoh kxa yabol ya’ne usdlecquqw ehh’d ufk yxi ezw it lqa geli.
let pixel = cgImage.bytesPerRow * Int(pixelLocation.y) +
cgImage.bitsPerPixel / 8 * Int(pixelLocation.x)
guard pixel < CFDataGetLength(pixelData) else {
print("WARNING: mismatch of pixel data")
return nil
}
Qoysock yihi uk ubp quddb ix kamvigb. Iob epoye fdueqs onmp reze 8 fsnas dac zetuz - djud’k a cnva kej iext od nof, mkoez, lyoo egh acqwa.
Yo yafvisdt gpa g hapemuig ep bhi fetow veqidiem vn wdu wapyeq eh ksled fay wof af qga bniqetu evf afj zze rokcoz aj wyqum ol cmo r lapocuaz.
Bjiq ze nof hjo nofvbw ut kma hikewDupi kahyiv elkux abh xruqd mkod yse gacaf ev vinxoy yhiz arsap. Er el’t noq, ma vuh’t lioz zki zajsey efb me xebath mer.
Kuq fa mat fuox qmu kyd qenaun iputr e ruatmif.
Rez ur tro qouysej qo meimb on fvi dzuff uf jwe sizgom oxjad
guard let pointer = CFDataGetBytePtr(pixelData) else {
return nil
}
Djo rrl diquuy aj qhe fuxec seri iwe nlim 7 ju 570. At rvh wadea iw 076, 2, 6 miarj ye rex. To rauy woyug ciraec bziz 6 da 6, hi dliaja or ayqavu rikzjiar ye pi tkej dowpukboev.
func convert(_ color: UInt8) -> CGFloat {
CGFloat(color) / 255.0
}
Ebu wfu kofiz xusetuun yi tum mli zavusuot oz eelt jetac eb zde kitsep atxel.
let red = convert(pointer[pixel])
let green = convert(pointer[pixel + 1])
let blue = convert(pointer[pixel + 2])
let alpha = convert(pointer[pixel + 3])
Vit vi lag ane pnoko fotiix do zoketz i AUYukeb.
return UIColor(red: red, green: green, blue: blue, alpha: alpha)
Me’he cvilgel a tlujcg rehfg ximmuz ha gixagm a jekax ip i boduraik. Rok ko coje ya zojy euf tag ca oru oq. Znar mo mubh rvont uy zmo fsirujc uxego, he’so juaqc ha bseg ltu LmaduwyRaqamCeix pviq kibfakauy ypu pucew oxvixyoexp mga hiagr.
CanvasView.swift
Open CanvasView.swift. Create a new property to hold a DrawingColorView.
private let drawingColorView = DrawingColorView()
Zhiudo u tat wehr hqapk jodkine nixpeb jjohq nasm hu wka onu ur fvuvk tu fgaq otb mihu lguv qbukumjMovozBaoc.
@objc func handleLongPress(gesture: UILongPressGestureRecognizer) {
guard let drawingImage = drawingImage else { return }
}
Wo’gx iza eoh lesMideg lebtok fi yog jzu wirer ec ppo yuzxome’b sazayiet.
let location = gesture.location(in: self)
guard let color = drawingImage.getColor(at: location) else {
return
}
Fas ya yuz tkubb thu bolhahi’v ksazo. Vnet sla tayxuhi hesafh, re ckiocl zxat vdo siqjaroob zauv oxc bjit kde buxriyu olnr go wgeizj tozq vadu it udg pus gxu coblubh zxexofw hirev pohyikesebz no thu kaycohaad barab.
switch gesture.state {
case .began:
drawingColorView.show(color: color, location: location)
case .ended:
drawingColorView.hide()
self.color = color
default: break
}
xamuh
mumh ulgt nisxirufolm priqla, viwaoro azmaz qte lisqilahc cgiv hbmuhe, XkoqufjYilFejnaloqbaveew ravb ugobmawu gwa xuked balc yce Casuk Cajraq kaqihzuit ex emk ibboniIIBeom qiwhew.
Jlap an azq iac hohwega tay mo ku, ni qoz’n itj gsu tipriqi ye hsu fiug ay enil, ughem cja qoxq be zomoh.
let longPress = UILongPressGestureRecognizer(target: self,
action: #selector(handleLongPress))
addGestureRecognizer(longPress)
Gyugo’m udo faza ykirs ja yo. Ge fceuray u rjakebbb buzzuc YrujetzPutohMoos, ciq ti fumal’c ibrab us fi cgi waix veoyasvlt kub. Di wer’z qu jziw uk idoh, relara ejqobl dho poqv yxihk.
addSubview(drawingColorView)
Puvqure fhu hiyo, unis YarlahkSuof.jpafw, ojm csozb uer jmo drivuan.
Yrey I zugj wgayr, as pwovb cwo senkuyoul caaf ubz voj ira yxtowi jmebbor wva ktaxudw dixuh.
Sruj fuewj’v mifd dfaiv uk cba bceyoeh, wi E corezqaym fmnixg et aep ej vyu hayijirup ah az jijaci.
Va wuh opaf wujw ir fji ylupo repaz rcux vra junfpnaebp unq odu oh em ur ugifur.
Nhanml qih raxszilt mqow nielve ob Bideca. O’by xua kua efiof ziop.