Get immediate access to this and 4,000+ other videos and books.
Take your career further with a Kodeco Pro subscription. With unlimited access to over 40+ books and
4,000+ professional videos in a single subscription, it's simply the best investment you can make in
your development career.
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.
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.
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.
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])
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.
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.
All videos. All books.
One low price.
A Kodeco subscription is the best way to learn and master mobile development — plans start at just $19.99/month! Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.