SlideShare a Scribd company logo
1 of 40
Download to read offline
IOSDEV: FIRST CLASS
Pavel Žák
–Pavel Žák
„Kéž bych tohle slyšel před 4 lety“
CO NÁS ČEKÁ?
• Motivace
• Jak se stát iOS Developerem?
• Vývoj pro iOS a jeho specifika
• Architektura aplikace
• Obrazovky a UI
• Best practices
• Čtení na doma
IOSÁCI
“celebs” mezi programátory?
IOSVS ANDROID
• nízká fragmentace
• rychlá adopce nových verzí iOS
• optimalizovaný HW
• vyšší produktivita
• vyšší požadavky uživatelů
• “performance nazis”
ZAČÍNÁME
• účet na https://developer.apple.com/
• xCode
• mac/vm/hackintosh (http://www.tonymacx86.com)
• (ios zařízení)
ALTERNATIVY
• JetBrains AppCode
• Xamarin.iOS (25$/m)
• RoboVM (19$/m)
• PhoneGap
• (Unity3D)
REFERENCE DO ZAČÁTKU
• Developer docs: https://developer.apple.com/
library/ios/navigation/
• RoadMapiOS: https://developer.apple.com/library/
ios/referencelibrary/GettingStarted/RoadMapiOS/
• tutoriály na http://www.raywenderlich.com
ARCHITEKTURA
CocoaTouch
Media
Core Services
Core OS
Filesystem, Networking,
Security, Bluetooth
ARCHITEKTURA
CocoaTouch
Media
Core Services
Core OS
CoreData, CoreLocation,
CoreMotion, Foundation,
CFNetwork, NewsstandKit,
Webkit, QuickLook…
ARCHITEKTURA
CocoaTouch
Media
Core Services
Core OS
AVFoundation, CoreAudio,
CoreImage, CoreText, GLKit,
MediaPLayer, Photos,
QuartzCore, SpriteKit,…
ARCHITEKTURA
CocoaTouch
Media
Core Services
Core OS
UIKit, EventKit, MapKit,
NotificationCenter, Social, …
MVC
A.K.A MASSIVEVIEWCONTROLLER
Model View
Controller
UI akceupdatenotifikace
Model View
Controller
UI akceupdatenotifikace
Model View
Controller
UI akceupdatenotifikace
Model View
Controller
UI akceupdatenotifikace
ANATOMIE UI
• Stromová hierarchie views
• 1 obrazovka ~ 1 controller
• View controller
containment
UIView
UIImage
UILabel UIButton
ViewController
UIView
čudl
obrázek
popisek
PODTŘÍDY UIVIEW
UIControl UIButton
UIPicker
UISlider
UISwitch
UITextfield
UIScrollView UITableView
UITextView
UICollectionView
UIImageView
UILabel
UIStepper
UIWebView
MKMapView
UIProgressView
UIActivityView
UIView
UIVIEW FRAME
• struktura CGRect
• origin & size
• relativně k superview
• neplést s Bounds!
• attr BOOL clipsToBounds
view
subview 1
subview2
TVORBA LAYOUTU/UI
• kód vs Interface Builder
• “fixní” vs autolayout
UIVIEW
• BackgroundColor
• Atributy Hidden vs Alpha
• Touch events vs Gesture recognizers
• Motion events
• Animace (pozice, transformace, pozadí, alpha)
• CALayer
DEMO
VIEW LIFECYCLE
LoadView
ViewDidLoad ViewWillAppear
ViewDidAppear
ViewWillDisappear
ViewDidDisappear
požadavek na
zobrazení View
požadavek na
skrytí View
DidReceiveMemoryWarning
REAKCE NA UDÁLOSTI
• Target-Action
• Delegace
• Zprávy přes NSNotificationCenter
• Key-value observing
• (callback blocks)
TARGET-ACTION
UIControl
Target: myViewController
Action: buttonPressed:
myViewController
UIControlEventTouchUpInside
- (void) buttonPressed:(id)sender
DEMO
DELEGACE
aObject
delegate: myViewController
myViewController
- - aObject:DidSomething:
- - aObject:ShouldDoSomething:
aObject:ShouldDoSomething:
YES
aObject:DidSomething:
NSNOTIFICATIONCENTER
NSNotificationCenter
anyObject otherObject
addObserver postNotification
observer1 observer2 observer3
SCROLLVIEW
UIScrollView
Content
ContentOffset
ContentSize
DEMO
TABULKY
UITableView
UITableViewCell
UITableViewCell
UITableViewDataSource
2
numberOfSectionsInTableView:
tableView:numberOfRowsInSection:
5
tableView:cellForRowAtIndexPath:
UITableViewCell
TABULKY
UITableView
UITableViewCell
UITableViewCell
UITableViewDelegate
60
tableView:heightForRowAtIndexPath:
tableView:viewForHeaderInSection:
UIView
tableView:didSelectRowAtIndexPath:
DEMO
DOPORUČENÍ K UI
• žádná zbytečná loga
• konzistence
• jednoznačnost
• obsah
• výkon
• čtěte HIG
PERSISTENCE DAT
• NSUserDefaults
• plists
• filesystem
• sqlite
• CoreData
DISTRIBUCE APLIKACE
• BundleId
• Vývojářský certifikát
• Provision profile
• AdHoc vs AppStore
• Testflight
A CO DÁL ?
• Samostudium
• Navazující přednášky
• Konzultace
pavel.zak@trinerdis.cz
Je to na vás!
ODKAZY
• Architektura iOS: https://developer.apple.com/library/ios/documentation/Miscellaneous/Conceptual/
iPhoneOSTechOverview/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007898-CH1-SW1
• HIG: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/
• Videa z WWDC: https://developer.apple.com/videos/wwdc/2014/

More Related Content

Similar to First class

Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]Kuba Břečka
 
Borek Bernard: TypeScript - příčetný jazyk pro web
Borek Bernard: TypeScript - příčetný jazyk pro webBorek Bernard: TypeScript - příčetný jazyk pro web
Borek Bernard: TypeScript - příčetný jazyk pro webDevelcz
 
Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Pavel Růžička
 
[cz] MonoGame framework, mDevCamp 2013
[cz] MonoGame framework, mDevCamp 2013[cz] MonoGame framework, mDevCamp 2013
[cz] MonoGame framework, mDevCamp 2013Tomáš Slavíček
 
Multiplatformni vyvoj
Multiplatformni vyvojMultiplatformni vyvoj
Multiplatformni vyvojKompilátor
 
Užitečné Android knihovny pro vývoj a testování
Užitečné Android knihovny pro vývoj a testováníUžitečné Android knihovny pro vývoj a testování
Užitečné Android knihovny pro vývoj a testováníTomáš Kypta
 
Vyvoj Windows Store aplikaci pomoci HTML, CSS a Javascriptu
Vyvoj Windows Store aplikaci pomoci HTML, CSS a JavascriptuVyvoj Windows Store aplikaci pomoci HTML, CSS a Javascriptu
Vyvoj Windows Store aplikaci pomoci HTML, CSS a JavascriptuJindra Parus
 
Dotykova zarizeni ve vyuce informatiky
Dotykova zarizeni ve vyuce informatikyDotykova zarizeni ve vyuce informatiky
Dotykova zarizeni ve vyuce informatikyINTERES - KISK
 
Vojtěch Mádr: Xamarin od A až do Z
Vojtěch Mádr: Xamarin od A až do ZVojtěch Mádr: Xamarin od A až do Z
Vojtěch Mádr: Xamarin od A až do ZeMan s.r.o.
 
Vývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
Vývoj Windows Store aplikací pomocí HTML, CSS a JavascriptuVývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
Vývoj Windows Store aplikací pomocí HTML, CSS a JavascriptuJindra Parus
 
Spring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariSpring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariRoman Pichlík
 
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptČtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptCtvrtkoncz
 
mDevCamp 2012 - Projekt Cordova
mDevCamp 2012 - Projekt CordovamDevCamp 2012 - Projekt Cordova
mDevCamp 2012 - Projekt CordovaTom Burger
 

Similar to First class (20)

Začínáme iOS vývoj
Začínáme iOS vývojZačínáme iOS vývoj
Začínáme iOS vývoj
 
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
 
Borek Bernard: TypeScript - příčetný jazyk pro web
Borek Bernard: TypeScript - příčetný jazyk pro webBorek Bernard: TypeScript - příčetný jazyk pro web
Borek Bernard: TypeScript - příčetný jazyk pro web
 
TNPW2-2013-09
TNPW2-2013-09TNPW2-2013-09
TNPW2-2013-09
 
Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)
 
[cz] MonoGame framework, mDevCamp 2013
[cz] MonoGame framework, mDevCamp 2013[cz] MonoGame framework, mDevCamp 2013
[cz] MonoGame framework, mDevCamp 2013
 
TNPW2-2016-07
TNPW2-2016-07TNPW2-2016-07
TNPW2-2016-07
 
Multiplatformni vyvoj
Multiplatformni vyvojMultiplatformni vyvoj
Multiplatformni vyvoj
 
TNPW2-2012-10
TNPW2-2012-10TNPW2-2012-10
TNPW2-2012-10
 
Užitečné Android knihovny pro vývoj a testování
Užitečné Android knihovny pro vývoj a testováníUžitečné Android knihovny pro vývoj a testování
Užitečné Android knihovny pro vývoj a testování
 
Vyvoj Windows Store aplikaci pomoci HTML, CSS a Javascriptu
Vyvoj Windows Store aplikaci pomoci HTML, CSS a JavascriptuVyvoj Windows Store aplikaci pomoci HTML, CSS a Javascriptu
Vyvoj Windows Store aplikaci pomoci HTML, CSS a Javascriptu
 
Dotykova zarizeni ve vyuce informatiky
Dotykova zarizeni ve vyuce informatikyDotykova zarizeni ve vyuce informatiky
Dotykova zarizeni ve vyuce informatiky
 
Vojtěch Mádr: Xamarin od A až do Z
Vojtěch Mádr: Xamarin od A až do ZVojtěch Mádr: Xamarin od A až do Z
Vojtěch Mádr: Xamarin od A až do Z
 
Vývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
Vývoj Windows Store aplikací pomocí HTML, CSS a JavascriptuVývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
Vývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
 
Spring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariSpring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou Tvari
 
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptČtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
 
mDevCamp 2012 - Projekt Cordova
mDevCamp 2012 - Projekt CordovamDevCamp 2012 - Projekt Cordova
mDevCamp 2012 - Projekt Cordova
 
JS2016
JS2016JS2016
JS2016
 
Zaverecny ukol
Zaverecny ukolZaverecny ukol
Zaverecny ukol
 
TNPW2-2012-05
TNPW2-2012-05TNPW2-2012-05
TNPW2-2012-05
 

First class