Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 6 - Neobjevujte kolo, použijte CocoaPods

V minulé lekci, Seznámení se s důležitou komponentou TableView, jsme se naučili používat TableView.

Programovali jste v jiném jazyku či si říkáte, že nemá smysl stále dokola vynalézat kolo? Tak to jste zde dnes správně. Ukážeme si totiž, jak se vyhnout programování stejných věcí stále dokola.

Swift nemá oficiální podporu balíčků, jako je třeba NuGet pro .NET projekty, ale to vůbec nevadí. Existuje spousta neoficiálních řešení a pravděpodobně nejlepším je CocoaPods.

CocoaPods

Jednotlivé balíčky se označují jako pods či zkrátka pody a umožňují nám snadno získat funkcionalitu, kterou již někdo naprogramoval. Plán této lekce je takový, že si ukážeme, jak pody do svého projektu dostat a také pár, které byste do začátku měli znát.

Abyste mohli sílu CocoaPods využít, musíte nejdříve CocoaPods dostat na svůj Mac (existují dva přístupy). Následně projekt připravíte na CocoaPods, určíte, jaké balíčky chcete, a poté již stačí používat import. Neděste se, na konci tutoriálu uvidíte, že mělo úsilí smysl.

Cesta terminálu

Kamarádíte s terminálem? Je to jedna z možností, jak CocoaPods nainstalovat na váš Mac a poté přidávat do projektů. Existuje ale také jednoduchá CocoaPods aplikace, která zajistí to samé. Jestli nechcete psát příkazy do terminálu, tak můžete tuto část tutoriálu přeskočit.

Otevřete terminál a začneme instalací samotného CocoaPods:

sudo gem install cocoapods

Instalace bude pravděpodobně nějaký čas trvat.

Aplikace

Pokud jste se rozhodli pro instalaci pomocí aplikace, stáhněte si oficiální CocoaPods aplikaci z webu a to je zatím vše.

Jak pody fungují

Nyní si vysvětlíme, jak pody fungují v projektu. Zatím jsme měli jeden projekt pro aplikaci. Pody mají vlastní projekt, takže CocoaPods z vašeho projektu nejdříve vytvoří Workspace. To jednoduše znamená, že máte více projektů "pod jednou střechou". Příliš se tím nemusíme zabývat.

Druhou důležitou součástí CocoaPods je soubor Podfile pro každý projekt. Právě v něm určíte, jaké pody chcete mít k dispozici a CocoaPods se postará o zbytek.

Terminál

Nyní si ukážeme, jak náš projekt na pody připravit. V terminálu si otevřete adresář vašeho projektu, kam chcete pody přidat. Měli byste být úplně v kořenovém adresáři, což znamená, že uvidíte soubor s koncovkou .xcodeproj, právě pro Xcode projekt. Xcode zavřete.

iOS - Vyvíjíme mobilní aplikace ve Swift

Nyní inicializujeme Cocoapods příkazem:

pod init

Opět stačí počkat a máte projekt připravený na pody.

Aplikace

V aplikaci klikněte na File v hlavním menu a vyberte New Podfile from Xcode Project. Nyní je třeba navigovat do adresáře projektu a vybrat soubor s příponou .xcodeproj. CocoaPods aplikace vám vytvoří a otevře Podfile.

Složka pro inicializaci Cocoapods - iOS - Vyvíjíme mobilní aplikace ve Swift

Editace Podfile

Pravděpodobně jste si již všimli změn. Respektive změny a tou je přidání souboru Podfile do kořenového adresáře projektu. Právě zde nastavíme, jaké balíčky (pody) chceme využívat.

Vytvořený Podfile - iOS - Vyvíjíme mobilní aplikace ve Swift

Podfile můžete editovat v jakémkoliv editoru. Při použití aplikace dává smysl jej editovat přímo v aplikaci. Pokud jste Podfile vytvořili aplikací, již ho máte otevřený. Pokud jste šli cestou terminálu, tak si ho v čemkoliv otevřete. Klidně přímo v Xcode.

Podfile otevřený v Xcode - iOS - Vyvíjíme mobilní aplikace ve Swift

Podfile je zatím víceméně prázdný a pouze obsahuje informace o tom, pro jaký projekt byl vytvořen:

project 'Cocoapods_ITNetwork.xcodeproj'

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'Cocoapods_ITNetwork' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for Cocoapods_ITNetwork

end

Učiníme, jak nám praví komentář, a odkomentujeme řádek s globální definicí platformy. To znamená, že smažeme #, pomocí kterého se komentuje:

platform :ios, '9.0'

Chameleon

Používání podů si můžeme ukázat na malém a užitečném podu Chameleon, což je framework pro barvy v iOS. Na Github stránce projektu najdeme instrukce, jak jej přes Cocoapods nainstalovat. Do našeho souboru tak pod komentář # Pods for Cocoapods_ITNetwork přidáme Chameleon jako jeden z podů:

pod 'ChameleonFramework/Swift', :git => 'https://github.com/ViccAlexander/Chameleon.git', :branch => 'wip/swift4'

Příkaz je trošku komplikovanější, aby framework fungoval s aktuální verzí Xcode a Swift 4. Běžně stačí klíčové slovo pod a název podu. Pro jistotu si ukážeme, jak má celý Podfile v této fázi vypadat:

project 'Cocoapods_ITNetwork.xcodeproj'

# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'

target 'Cocoapods_ITNetwork' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for Cocoapods_ITNetwork
  pod 'ChameleonFramework/Swift', :git => 'https://github.com/ViccAlexander/Chameleon.git', :branch => 'wip/swift4'

end

Terminál

Pokud CocoaPods používáte přes terminál, tak nyní Podfile uložte a spusťte následující příkaz:

pod install

Aplikace

Jestliže máte CocoaPods aplikaci, tak nyní stačí pouze kliknout na tlačítko Install v pravém horním rohu a chvíli počkat.

Projekt s Chameleonem

Nyní již projekt vypadá zajímavěji. Máme tu např. složku Pods/, kde právě sídlí pody a také důležitý soubor s koncovkou .xcworkspace. Právě ten budeme nyní používat při otevírání projektu, protože pody mají vlastní projekt a při otevření přes původní .xcodeproj nebudou fungovat.

Xcode projekt s nainstalovanými cocoapody - iOS - Vyvíjíme mobilní aplikace ve Swift

Otevřeme tedy projekt přes .xcworkspace a hned si můžeme zkusit Chameleona použít.

Přejdeme do ViewController.swift a přidáme import čerstvě nainstalovaného podu:

import ChameleonFramework

Zkusíme Build (Cmd + B), abychom se přesvědčili, že je vše v pořádku. Používat Chameleon Framework nemá v prázdném projektu smysl, tak se jen podíváme, že funguje.

Nabízí např. mnohem hezčí barvy, než ty systémové. Jejich seznam naleznete na stránce projektu a dostanete se k nim přes systémovou třídu UIColor, kde jsou nově dostupné další barvy. Xcode nám ukáže např. dostupné pastelové "flat" barvy:

Flat barvy Chameleon frameworku pro Swift - iOS - Vyvíjíme mobilní aplikace ve Swift

Již jen pro barvy se vyplatí framework zvážit. Aplikace bude s minimem úsilí vypadat o třídu lépe.

Dále vám Chameleon pomůže s gradienty, umí vygenerovat barvy z obrázků či nastavit kontrastní barvu pro zadané pozadí. To se hodí v případě, kdy řešíte barvy dynamicky a chcete, aby byl text vždy čitelný.

Stačí k tomu jedna metoda, která vrátí kontrastní UIColor pro zadané pozadí a můžete si vybrat, jestli chcete vrátit flat barvu.

ContrastColorOf(UIColor.flatBlue, returnFlat: true)

V jedné z dalších lekcí CocoaPods využijeme, až si budeme ukazovat, jak získat data z internetu (ve formátu JSON) a jak tento formát zpracovat. Oboje umí sám Swift, pomocí knihoven AlamoFire a SwiftyJSON to ale půjde mnohem snadněji. Dá se říci, že zrovna tyto dvě se staly takovým nepsaným standardem pro aplikace, které tahají data z internetu a pracují s JSON formátem.

V příští lekci, Když jedna obrazovka nestačí - Navigace v iOS, se podíváme na navigaci a začneme tím pracovat na slíbené TODO aplikaci :)


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 17x (127.89 kB)
Aplikace je včetně zdrojových kódů v jazyce Swift

 

Předchozí článek
Seznámení se s důležitou komponentou TableView
Všechny články v sekci
iOS - Vyvíjíme mobilní aplikace ve Swift
Přeskočit článek
(nedoporučujeme)
Když jedna obrazovka nestačí - Navigace v iOS
Článek pro vás napsal Filip Němeček
Avatar
Uživatelské hodnocení:
5 hlasů
Autor se věnuje vývoji iOS aplikací (občas macOS)
Aktivity