XCODE PLAYGROUND · 2. XCODE PLAYGROUND 33 2 XCODE PLAYGROUND , - Hello World . . Xcode -
Ideal für Programmiereinsteiger - s3-eu-west-1… · Abbildung 1.33 Das Statusfenster von Xcode...
Transcript of Ideal für Programmiereinsteiger - s3-eu-west-1… · Abbildung 1.33 Das Statusfenster von Xcode...
LeseprobeWenn Sie lernen wollen, wie Sie Apps mit Swift programmieren, dann sind Sie hier genau richtig. Diese Leseprobe führt Sie Schritt für Schritt durch die Entwicklung eines Hallo-Welt-Programms und erklärt Ihnen, wie Sie Benutzeroberflächen mit Swift und XCode ge-stalten. Programmiereinsteiger finden so einen leichten Zugang zur App-Entwicklung.
Jörg Brunsmann, Dominik Hauser, Klaus M. Rodewig
Apps programmieren mit Swift – Ideal für Programmiereinsteiger371 Seiten, broschiert, Dezember 2016 29,90 Euro, ISBN 978-3-8362-4090-1
www.rheinwerk-verlag.de/4094
»Die erste App« (Auszug) »Erstellen von Benutzeroberflächen« (Auszug)
Inhaltsverzeichnis
Index
Die Autoren
Leseprobe weiterempfehlen
Wissen, wie’s geht.
1 Ein kleiner Schritt …
44
Abbildung 1.26 Apples neue Programmiersprache Swift
1.3.1 Das steckt hinter Swift
Wenn man so will, ist Swift die Weiterentwicklung von Objective-C. Swift hat viele
Eigenschaften, die auch Objective-C hat, es bietet Mechanismen wie Klassen oder Verer-
bung. Das liegt allerdings weniger daran, dass sich Swift bei Objective-C bedient hätte,
sondern daran, dass Swift – so wie alle modernen Programmiersprachen – eine objekt-
orientierte Sprache ist. Neben Objective-C standen auch Sprachen wie Ruby, Python
oder Rust Pate für Swift.
Apple hat für angehende Swift-Programmierer eine eigene Webseite unter developer.
apple.com/swift eingerichtet. Hier gibt es ein eigenes Blog, einige Einführungsvideos
und andere Hilfen, wenn Sie sich näher mit Swift beschäftigen möchten.
Es gibt auch ein richtiges Handbuch zu Swift, in dem alle wichtigen Funktionen und
Vorgehensweisen erklärt werden. Das Handbuch ist in zwei Teile gegliedert, Sie können
4090-1.book Seite 44 Freitag, 2. Dezember 2016 9:00 21
1.4 Die erste App
45
1beide kostenlos aus dem Apple Bookstore laden und auf dem Mac, dem iPad oder
iPhone lesen.
Swift ist seit Ende 2015 Open Source. Das bedeutet, dass der Quelltext, der die Program-
miersprache ausmacht (und die Programme, die aus dem Quelltext ein ausführbares
Programm erstellen), für jeden einsehbar auf einer Seite im Internet zur Verfügung
gestellt wird. Mehr noch, Apple ermutigt die Entwicklergemeinde dazu, aktiv bei der
Weiterentwicklung von Swift mitzuhelfen. In der Version 2.2 wurden zum ersten Mal
Beiträge von Entwicklern, die nicht zu Apple gehören, in die Sprache mit aufgenommen.
Als erste Anlaufstelle für interessierte Entwickler hat Apple die Internetseite swift.org
eingerichtet. Schauen Sie sich die Seite ruhig einmal an. Apple hat sich damit sehr viel
Mühe gegeben und gezeigt, dass sie es ernst meinen mit Swift. Aber lassen Sie sich nicht
entmutigen, wenn Sie die verwendeten Begriffe noch nicht verstehen. Die Seite ist eher
für erfahrene Swift-Entwickler gedacht.
1.3.2 Warum eine neue Programmiersprache?
Die Frage ist: Warum überhaupt entwickelt Apple eine eigene Programmiersprache? So
schlecht kann das bisher verwendete Objective-C nicht sein, sonst würde es nicht eine
solche Menge an Apps geben. Aber vielleicht darf man diese Frage gar nicht so stellen,
sondern muss anders an die Sache herangehen.
Apple hat Swift wahrscheinlich vor allem deshalb entwickelt, weil sie es können. Und
weil sie mit Swift auch Dinge umsetzen können, die ihnen in Objective-C gefehlt haben
oder die sie dort zu kompliziert fanden. Klar, wenn man Besitzer eines Hauses ist, fällt
der Umbau deutlich leichter, als wenn man Hunderte von Mitbewohnern und -besit-
zern von den Bauplänen überzeugen muss. Will Apple die Softwareentwicklung für die
eigenen Geräte vorantreiben, macht es – aus ihrer Sicht – durchaus Sinn, eine eigene
Programmiersprache dafür ins Leben zu rufen.
1.4 Die erste App
Der Mac läuft, Xcode ist installiert, jetzt wird es Sie jucken, die erste App zu programmie-
ren. Also los! Damals, als das Internet noch schwarzweiß war, die Telekom noch Bundes-
post hieß und Computer große, graue Kisten mit schwarzen Terminals waren, auf
denen grüne Schrift flimmerte, war Programmieren eine anstrengende und wenig intu-
itive Arbeit. Mit Xcode sieht das glücklicherweise ganz anders aus: Die IDE unterstützt
Sie, wo sie nur kann, dabei, gute Apps zu schreiben. Damit Sie einen Überblick über die
4090-1.book Seite 45 Freitag, 2. Dezember 2016 9:00 21
1 Ein kleiner Schritt …
46
Fähigkeiten von Xcode erhalten und gleichzeitig sehen, wie schnell eine einfache App
erstellt ist, werden Sie nun Ihre (wahrscheinlich) erste App für das iPhone schreiben.
Dabei werden Sie bereits einige Zeilen Code programmieren, ohne dass Sie verstehen,
was diese Zeilen bedeuten. Keine Angst, das ist gewollt! Direkt im nächsten Kapitel stei-
gen Sie in die Praxis der Programmierung ein, Ihre Fragen bleiben also nicht lange
unbeantwortet.
Öffnen Sie jetzt Xcode. Sie werden mit einem Startbildschirm begrüßt (siehe Abbil-
dung 1.27).
Abbildung 1.27 Das Startfenster von Xcode
Wählen Sie im Startbildschirm den Punkt Create a new Xcode project, um ein neues
Projekt anzulegen. Xcode zeigt Ihnen im nächsten Dialog die Liste der möglichen Pro-
jektarten an. Wählen Sie in der oberen Leiste den Punkt iOS. In der Übersicht darunter
sehen Sie nun verschiedene Arten von Apps, die Sie mit Xcode erstellen können (siehe
Abbildung 1.28).
Für den Anfang, und davon abgesehen für die meisten Fälle, wählen Sie den Typ Single
View Application und betätigen anschließend den Next-Button unten rechts im
Fenster. Im nächsten Dialogfenster müssen Sie noch einige Optionen festlegen, bevor
Sie mit der eigentlichen Programmierung beginnen können (siehe Abbildung 1.29).
4090-1.book Seite 46 Freitag, 2. Dezember 2016 9:00 21
1.4 Die erste App
47
1
Abbildung 1.28 Die Projektschablonen von Xcode
Abbildung 1.29 Die Projektoptionen von Xcode
4090-1.book Seite 47 Freitag, 2. Dezember 2016 9:00 21
1 Ein kleiner Schritt …
48
Der Product Name ist der Name der App, also der Name, den Sie unter dem Icon der
App auf dem iPhone sehen. Geben Sie der App den Namen »Hallo Welt«. Das Feld Team
können Sie für den Moment ignorieren. Das Feld Organization Name enthält den
Namen der Firma, unter dem Sie die App veröffentlichen wollen. Da es sich hier ja ledig-
lich um eine Test-App handelt, können Sie dort eintragen, was Sie wollen.
Dasselbe gilt für den Organization Identifier, der dazu dient, aus der Kombination
einer Internetdomäne und des App-Namens einen eindeutigen Bezeichner zu erstel-
len. Diese Angabe ist für die Veröffentlichung im App Store wichtig. Wenn Sie keine
eigene Internetdomäne besitzen, verwenden Sie als Organization Identifier ein-
fach eine Kombination aus Ihrem Vor- und Nachnamen, also zum Beispiel »bruns-
mann.joerg«. Xcode macht daraus zusammen mit dem Namen der App den Bezeichner
brunsmann.joerg.Hallo-Welt; Xcode zeigt dies bereits beim Eingeben der entsprechen-
den Werte an.
Als Programmiersprache (Language) wählen Sie bitte Swift aus.
Nachdem Sie den Dialog über den Next-Button beendet haben, fragt Xcode nach einem
Ordner, in dem es das neue Projekt ablegen soll. Suchen Sie ein passendes Plätzchen auf
der Festplatte Ihres Macs, und legen Sie am besten ein neues Verzeichnis für Ihre kom-
menden Projekte an (siehe Abbildung 1.30). Über den Button Create veranlassen Sie
anschließend Xcode, das Projekt mit den von Ihnen festgelegten Parametern anzulegen.
Abbildung 1.30 Das Projekt braucht eine Heimat!
Nach dem Anlegen des neuen Projekts begrüßt Sie der Hauptbildschirm von Xcode, den
Sie ja in Abschnitt 1.2.6 bereits kennengelernt haben (siehe Abbildung 1.31).
4090-1.book Seite 48 Freitag, 2. Dezember 2016 9:00 21
1.4 Die erste App
49
1
Abbildung 1.31 Das neue Projekt im Xcode-Fenster
Ganz links in der Werkzeugleiste von Xcode finden Sie den wichtigsten Button über-
haupt: den Run-Button (siehe Abbildung 1.32). Damit weisen Sie Xcode an, den Quell-
text der App zu übersetzen und auszuführen. In dem Dropdown-Feld rechts neben dem
ausgegrauten Stop-Button können Sie festlegen, wo Xcode die App ausführt. Standard-
mäßig ist hier der iPhone-Simulator ausgewählt. Belassen Sie diese Einstellung, und
drücken Sie anschließend den Run-Button.
Abbildung 1.32 Der wichtigste Button von Xcode
Im Statusfenster von Xcode, in der Mitte der Werkzeugleiste, werden Sie nun allerlei
Aktivität erkennen. Nach Beenden des Übersetzungsvorgangs startet Xcode den
iPhone-Simulator, und das Statusfenster meldet Vollzug (siehe Abbildung 1.33).
Abbildung 1.33 Das Statusfenster von Xcode
Der iPhone-Simulator zeigt Ihnen die übersetzte App an. Xcode benutzt standardmäßig
den iPhone-7-Plus-Simulator. Da das iPhone 7 Plus eine sehr hohe Anzahl an Pixeln hat,
4090-1.book Seite 49 Freitag, 2. Dezember 2016 9:00 21
1 Ein kleiner Schritt …
50
sehen Sie, abhängig von der Auflösung Ihres Macs, nur einen kleinen Ausschnitt der
App. Sie können die Größe des simulierten iPhones ändern, indem Sie im Menüpunkt
Window unter Scale einen passenden Wert auswählen (siehe Abbildung 1.34).
Abbildung 1.34 Die Darstellungsgröße des simulierten iPhones ändern
Da Sie bisher noch nichts programmiert haben, ist die App ziemlich funktionslos (siehe
Abbildung 1.35).
Abbildung 1.35 Die App im Simulator: ostfriesische Nationalflagge
4090-1.book Seite 50 Freitag, 2. Dezember 2016 9:00 21
1.4 Die erste App
51
1Immerhin sehen Sie aber eine weiße Fläche. Das ist schon mal ein guter Anfang, denn
das bedeutet zum einen, dass das Übersetzen geklappt hat, zum anderen bedeutet es,
dass Xcode Ihnen bereits eine Menge Arbeit abgenommen hat. Es hat automatisch den
Quelltext des Projekts in eine ausführbare Datei übersetzt, es hat diese Datei in den
iPhone-Simulator geladen und gestartet, und die App verfügt bereits über ein Fenster.
Um diese Dinge müssen Sie sich also schon nicht mehr kümmern. Beenden Sie nun die
App über den Stop-Button in der Werkzeugleiste von Xcode.
1.4.1 Hallo Welt
In der IT ist es Tradition, dass das erste Programm eines Neulings daraus besteht, die
zwei Wörter »Hallo Welt« auszugeben. Das ist in etwa so, wie Tontechniker beim Test
von Mikrofonen immer »1, 2, 3 – Test – Test« sagen. Abgesehen von der Tradition ist ein
schöner Nebeneffekt, dass man über Hallo-Welt-Programme die Syntax von Sprachen
vergleichen kann. Wikipedia hält eine schöne Seite bereit, auf der die Hallo-Welt-Pro-
gramme von zurzeit 112 verschiedenen Programmiersprachen aufgeführt sind. Es gibt
dort sogar ein Hallo-Welt-Programm in Swift, der Sprache, in der die iPhone-Apps
geschrieben sind.
Um aus der von Xcode erzeugten, leeren App eine Hallo-Welt-App zu machen, wählen
Sie im Navigationsbereich von Xcode die Datei Main.storyboard aus (siehe Abbildung
1.36). Damit öffnen Sie den grafischen Editor von Xcode, den Interface Builder. Dort kön-
nen Sie die grafische Benutzeroberfläche der App, das GUI (für Graphical User Interface),
bequem mit der Maus zusammenstellen.
Abbildung 1.36 Die Datei »Main.storyboard«
Im Interface Builder sehen Sie ein rechteckiges weißes Feld. Dies stellt die Oberfläche
Ihrer App dar (siehe Abbildung 1.37).
4090-1.book Seite 51 Freitag, 2. Dezember 2016 9:00 21
1 Ein kleiner Schritt …
52
Abbildung 1.37 Der Interface Builder
Die Xcode-Utilities enthalten unter anderem verschiedene Elemente zum Bauen der
Benutzeroberfläche einer App. Die Hallo-Welt-App soll ja den Text »Hallo Welt« anzei-
gen, also benötigen Sie zunächst ein Element zum Anzeigen von Text. Öffnen Sie dazu
die Objektbibliothek, indem Sie den Menüpunkt View � Utilities � Show Object
Library auswählen (siehe Abbildung 1.38).
Abbildung 1.38 Anzeige der Objektbibliothek aktivieren
4090-1.book Seite 52 Freitag, 2. Dezember 2016 9:00 21
1.4 Die erste App
53
1Am unteren Ende der Objektbibliothek finden Sie ein Suchfeld, in das Sie den Text
»label« eingeben. Xcode zeigt Ihnen das entsprechende Objekt an und gibt die Beschrei-
bung direkt dazu: A variably sized amount of static text (siehe Abbildung 1.39).
Das klingt gut.
Abbildung 1.39 Ein Label
Abbildung 1.40 Man nehme ein Label …
4090-1.book Seite 53 Freitag, 2. Dezember 2016 9:00 21
1 Ein kleiner Schritt …
54
Nehmen Sie nun das Label mit der Maus (siehe Abbildung 1.40), und ziehen Sie es mit
gedrückter Maustaste auf die im Interface Builder angezeigte Oberfläche der App. Dort
lassen Sie das Label los (siehe Abbildung 1.41). Xcode zeigt Hilfslinien an, die Ihnen dabei
helfen, das Label genau in der Mitte der Oberfläche zu platzieren.
Abbildung 1.41 … und platziere es auf der Oberfläche der App.
Anschließend ziehen Sie ein Objekt vom Typ Button auf das GUI. Geben Sie »Button«
in das Suchfeld der Objektbibliothek ein, und ziehen Sie ein Objekt vom Typ Button
(siehe Abbildung 1.42) auf die Oberfläche der App (siehe Abbildung 1.43).
4090-1.book Seite 54 Freitag, 2. Dezember 2016 9:00 21
1.4 Die erste App
55
1
Abbildung 1.42 Das ist der richtige Button.
Abbildung 1.43 Die fertige Oberfläche der App
Wenn Sie die App nun übersetzen und in einem iPhone-7-Simulator starten (siehe
Abbildung 1.44), …
4090-1.book Seite 55 Freitag, 2. Dezember 2016 9:00 21
1 Ein kleiner Schritt …
56
Abbildung 1.44 Starten Sie die App auf einem iPhone-7-Simulator.
… sollte der iPhone-Simulator ein Bild wie in Abbildung 1.45 abgeben.
Abbildung 1.45 Trost-, aber nicht hoffnungslos
4090-1.book Seite 56 Freitag, 2. Dezember 2016 9:00 21
1.4 Die erste App
57
1Anders sieht es aus, wenn Sie die App auf einem iPhone-SE-Simulator starten (siehe
Abbildung 1.46).
Abbildung 1.46 Schön ist das nicht!
Label und Button sind ja gar nicht mittig. Noch keine Zeile programmiert, schon geht
der Ärger los. Das ist das Ergebnis der mittlerweile vielen verschiedenen iPhone-
Modelle mit verschiedenen Displaygrößen. Ein im Interface Builder schnell zusammen-
geklicktes GUI ist nicht automatisch ein ordentliches GUI, und Elemente können ver-
rutscht erscheinen. Xcode verfügt aber praktischerweise über eine Funktion namens
Autolayout. Öffnen Sie dafür den Interface Builder, halten Sie die (cmd)-Taste gedrückt,
und markieren Sie mit der Maus das Label und den Button.
4090-1.book Seite 57 Freitag, 2. Dezember 2016 9:00 21
1 Ein kleiner Schritt …
58
Anschließend klicken Sie auf den Align-Button unten in der Fußzeile des Interface Buil-
ders (siehe Abbildung 1.47).
Abbildung 1.47 Label und Button auswählen und auf »Align« klicken
Es öffnet sich ein Fenster, mit dem Sie die Position von GUI-Elementen festlegen kön-
nen. Für den Anfang reicht es, dass Sie für die beiden gewählten Elemente, Label und
Button, festlegen, dass diese immer mittig auf dem Bildschirm erscheinen sollen. Wäh-
len Sie daher Horizontally in Container, belassen Sie den Wert auf 0, und bestäti-
gen Sie mit dem unteren Button (Add 2 Constraints).
Markieren Sie nun nur das Label, und klicken Sie erneut den Align-Button. Wählen Sie
Vertically in Container, belassen Sie wiederum den Wert auf 0, und bestätigen Sie
mit dem unteren Button (Add 1 Constraint).
Als Nächstes markieren Sie den Button (1 in Abbildung 1.48) und klicken den Pin-But-
ton (rechts neben dem Align-Button 2). Es öffnet sich ein Fenster, in dem Sie den But-
ton relativ zu anderen UI-Elementen festpinnen können. Klicken Sie in dem Fenster auf
den roten Balken direkt unter dem oberen Textfeld 3, und bestätigen Sie mit dem unte-
ren Button (Add 1 Constraint 4). Damit legen Sie fest, dass der Button 8 Pixel unter-
halb des Labels angezeigt werden soll.
Führen Sie die App jetzt auf einem iPhone-SE-Simulator aus. Siehe da, Label und Button
sind mittig. Heureka!
4090-1.book Seite 58 Freitag, 2. Dezember 2016 9:00 21
1.4 Die erste App
59
1Sie können den Button der App so oft drücken, wie Sie wollen – es passiert nichts. Das
liegt daran, dass Sie über den Interface Builder zwar die Gestaltung Ihrer Apps vorneh-
men können, die Funktionalität aber »zu Fuß« im Hintergrund programmieren müs-
sen. Also in die Hände gespuckt, jetzt beginnt die eigentliche Programmierarbeit.
Abbildung 1.48 Den Button festpinnen
Wählen Sie, falls nicht ohnehin noch geöffnet, im Navigationsbereich von Xcode die
Datei Main.storyboard, so dass der Interface Builder geöffnet ist, und aktivieren Sie
anschließend oben rechts in der Werkzeugleiste von Xcode den Assistant editor
(siehe Abbildung 1.49).
Abbildung 1.49 Öffnen Sie den »Assistant editor«.
Xcode öffnet nun automatisch neben dem Interface Builder ein weiteres Fenster und
zeigt dort die Datei ViewController.swift an (siehe Abbildung 1.50).
4090-1.book Seite 59 Freitag, 2. Dezember 2016 9:00 21
1 Ein kleiner Schritt …
60
Abbildung 1.50 Der Interface Builder und der »Assistant editor« nebeneinander
Halten Sie jetzt die (ctrl)-Taste auf Ihrem Mac gedrückt, und ziehen Sie mit gedrückter
Maustaste eine Verbindung vom Label im Interface Builder in den Assistant editor,
und zwar unter die Codezeile, die mit class beginnt (siehe Abbildung 1.51).
Abbildung 1.51 Ziehen Sie eine Verbindung von der Oberfläche in den Code.
4090-1.book Seite 60 Freitag, 2. Dezember 2016 9:00 21
1.4 Die erste App
61
1Lassen Sie die Maustaste dort los, und geben Sie der neuen Verbindung in dem sich öff-
nenden Dialog den Namen »label« (siehe Abbildung 1.52). Über den Button Connect ver-
anlassen Sie Xcode, die Verbindung zu erzeugen und eine neue Zeile Code anzulegen.
Abbildung 1.52 Die Verbindung erhält den Namen »label«.
Sie haben gerade ein sogenanntes Outlet erzeugt. Ein Outlet, übersetzt Ausgang, ist eine
Verbindung vom Code zur Oberfläche einer App. Das Programm kann dieses Outlet
ansprechen. Sie ahnen es bereits: Im Endzustand wird das Label auf der Oberfläche der
App die Zeichenkette »Hallo Welt« anzeigen. Den ersten Schritt dazu haben Sie bereits
erledigt.
Jetzt fehlt noch eine Verbindung, die dem Button Leben einhaucht. Ziehen Sie also
ebenfalls mit gedrückter (ctrl)-Taste eine Verbindung vom Button über die letzte
geschweifte Klammer (siehe Abbildung 1.53).
Abbildung 1.53 Noch eine Verbindung
4090-1.book Seite 61 Freitag, 2. Dezember 2016 9:00 21
1 Ein kleiner Schritt …
62
Wählen Sie in dem sich öffnenden Dialog oben den Typ Action aus, geben Sie dieser
Action den Namen »button«, und bestätigen Sie den Dialog mit dem Connect-Button
(siehe Abbildung 1.54).
Abbildung 1.54 Eine Action mit dem Namen »button«
Der Inhalt der Datei ViewController.swift sollte nun wie folgt aussehen:
import UIKit
class ViewController: UIViewController {@IBOutlet weak var label: UILabel!
override func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading the view, typically from ...
}
override func didReceiveMemoryWarning() {super.didReceiveMemoryWarning()// Dispose of any resources that can be recreated.
}
@IBAction func button(_ sender: AnyObject) {}
}
Listing 1.1 Die Datei »ViewController.swift«
Schließen Sie nun den Assistant editor, und öffnen Sie anschließend die Datei View-
Controller.swift. Durch die Verknüpfung, die Sie im vorherigen Schritt erstellt haben, hat
Xcode folgenden Methodenrumpf erzeugt:
@IBAction func button(_ sender: AnyObject) {}
Listing 1.2 Der Rumpf der Methode »button:«
4090-1.book Seite 62 Freitag, 2. Dezember 2016 9:00 21
1.4 Die erste App
63
1Die Methode wird aufgerufen, wenn Sie den Button der App betätigen. Es fehlt nun also
nur noch die Anweisung, mit deren Hilfe das Label den Text »Hallo Welt« anzeigt. Dazu
bedienen Sie sich des Outlets label und fügen die folgende Zeile der Methode button:
hinzu:
self.label.text = "Hallo Welt"
Die ganze Methode sieht dann so aus:
@IBAction func button(_ sender: AnyObject) {self.label.text = "Hallo Welt"
}
Listing 1.3 Die Methode »button(_:)« im Endausbau
Jetzt bleibt nicht sehr viel mehr zu tun, als die App zu übersetzen und im Simulator aus-
zuführen. Drücken Sie nach dem Start auf den Button, und sehen Sie, was passiert (siehe
Abbildung 1.55).
Abbildung 1.55 Hallo Welt!
4090-1.book Seite 63 Freitag, 2. Dezember 2016 9:00 21
1 Ein kleiner Schritt …
64
Gratulation, Sie haben soeben Ihr erstes Hallo-Welt-Programm auf dem iPhone pro-
grammiert! War doch gar nicht so schwierig, oder?
Eine kleine Verschönerung sollten Sie allerdings noch vornehmen. Der unbedarfte
Benutzer weiß womöglich nichts mit der App anzufangen. Daher fügen Sie in der Datei
ViewController.swift in der Methode viewDidLoad noch eine Zeile ein, die dem Label den
Text »Bitte Button drücken!« zuweist (in Listing 1.4 fett gedruckt):
override func viewDidLoad() {super.viewDidLoad()self.label.text = "Bitte Button drücken!"
}
Listing 1.4 Die Methode »viewDidLoad«
Wenn Sie die App nun erneut übersetzen und starten, erscheint nach dem Laden
zunächst dieser Text (siehe Abbildung 1.56). Das Auge guckt ja schließlich auch mit!
Abbildung 1.56 Ich habe fertig.
4090-1.book Seite 64 Freitag, 2. Dezember 2016 9:00 21
1.5 Zusammenfassung
65
1Code der Beispiele zum Download
Damit Sie die Listings nicht mühsam abtippen müssen, finden Sie sie auf
www.rheinwerk-verlag.de/4094 zum Download..
1.5 Zusammenfassung
Nach dem Durcharbeiten dieses Kapitels sollten Sie einen Überblick darüber gewonnen
haben, was Sie an Hard- und Software benötigen, um Apps programmieren zu können.
Sie haben das Software Development Kit Xcode und seine wichtigsten Bestandteile ken-
nengelernt und erfahren, wo man sich als Apple-Entwickler registrieren kann, um auf
weiter gehende Dokumentationen und Informationen zugreifen zu können. Und zu
guter Letzt haben Sie Ihre erste App programmiert! Damit sind Sie gut gerüstet, um in
den nächsten Kapiteln tiefer in die App-Programmierung eintauchen zu können.
4090-1.book Seite 65 Freitag, 2. Dezember 2016 9:00 21
197
5
Kapitel 5
An der Oberfläche
»Schlauberger sind verdammt unbeliebt!«
Jack Slater
In diesem Kapitel lernen Sie die wichtigsten Elemente für die Gestaltung einer Benut-
zeroberfläche (GUI) kennen. Dazu zählen verschiedene Ansichtselemente zur Gruppie-
rung und natürlich verschiedene Arten, Daten in einer App anzuzeigen. Das alles haben
wir in einer Beispiel-App verpackt, die Sie bis Kapitel 7 einschließlich kontinuierlich um
Funktionen erweitern werden. Mit der Beispiel-App wird es möglich sein, schöne Orte
(inklusive Foto und nützlichen Informationen wie Datum und Koordinaten) für später
zu speichern.
5.1 Erstellen von Benutzeroberflächen
Bei der Programmierung für einen Desktop-Rechner oder beim Design von Webseiten
hat man als Programmierer viel Platz für den eigenen Gestaltungswillen zur Verfügung.
Der Bildschirm eines Desktop-Rechners ist groß genug, um eine Vielzahl von Funktio-
nen und Elementen auf einer einzelnen Bildschirmseite unterzubringen. Das sieht bei
einem Smartphone ganz anders aus. Die begrenzte Größe des Displays erfordert
Umdenken beim Design von Benutzeroberflächen. In den Anfangszeiten des Apple App
Stores gab es noch unzählige Apps, bei denen die Programmierer ihre althergebrachten
Designideen einfach vom Desktop auf das iPhone transferiert hatten. Das Ergebnis
waren hässliche, kompliziert zu bedienende Apps, bei denen keine rechte Freude auf-
kommen wollte.
Mittlerweile hat sich die Situation aber stark gewandelt, und Apple hat mit seinen
Human Interface Design Guidelines1 eine Dokumentation für angehende iOS-Program-
1 https://developer.apple.com/library/ios/documentation/userexperience/conceptual/mobilehig
4090-1.book Seite 197 Freitag, 2. Dezember 2016 9:00 21
5 An der Oberfläche
198
Abbildung 5.1 Übersicht der E-Mails in Apples
E-Mail-App
Abbildung 5.2 Eine neue Ansicht: geöffnete
mierer zusammengestellt, in der alle wichtigen Aspekte für das Design ansprechender
Benutzeroberflächen gut erklärt sind.
Die elementarste Neuerung beim Erstellen der Benutzeroberfläche einer App ist der
Umstand, dass eine App in der Regel aus vielen verschiedenen Ansichten, sogenannten
Views, besteht. Jede View erfüllt eine eigene Aufgabe. Denken Sie zum Beispiel an das
E-Mail-Programm auf dem iPhone. Wenn Sie das Programm starten, sehen Sie eine Liste
aller eingegangenen E-Mails (siehe Abbildung 5.1). Öffnen Sie eine E-Mail, wird die Liste
der E-Mails durch diese eine E-Mail überlagert (siehe Abbildung 5.2).
Antworten Sie auf eine geöffnete E-Mail, so erscheint wieder eine neue Ansicht, nämlich
die der geöffneten E-Mail (siehe Abbildung 5.3).
4090-1.book Seite 198 Freitag, 2. Dezember 2016 9:00 21
5.1 Erstellen von Benutzeroberflächen
199
5
Abbildung 5.3 Für die Antwort eine weitere Ansicht
5.1.1 App-Design mit Storyboards
Um das Erstellen solcher zusammenhängender Benutzeroberflächen zu erleichtern, hat
Apple mit iOS 5 das Storyboard eingeführt. Der Begriff Storyboard kommt ursprünglich
aus dem Filmgeschäft und bedeutet Skizzenbuch. In einem Skizzenbuch gestaltet der
Drehbuchautor durch das Aneinanderreihen von Skizzen die Geschichte eines Films,
ähnlich der Gestaltung eines Comics. Apples Storyboard funktioniert ähnlich. Anstatt
die einzelnen Ansichten einer Benutzeroberfläche unabhängig voneinander zu gestal-
ten und erst im Code zusammenzuführen, so wie es bei der App-Programmierung vor
iOS 5 der Fall war, erlaubt das Storyboard das intuitive und übersichtliche Verknüpfen
von Ansichten im Interface Builder. Sie können im Storyboard einfach neue Ansichten
erzeugen, diese an beliebige Stellen schieben, ganz so wie es Ihnen beim Design der
Benutzeroberfläche in den Sinn kommt (siehe Abbildung 5.4).
4090-1.book Seite 199 Freitag, 2. Dezember 2016 9:00 21
5 An der Oberfläche
200
Abbildung 5.4 Ein Storyboard im Interface Builder
GUI-Design anno dunnemals
Es gab und gibt auch noch die Möglichkeit, ein GUI statt mit dem Storyboard über Ein-
zelansichten zusammenzufügen, die sogenannten XIB-Dateien. Zum einen ist dies aber
wenig intuitiv, zum anderen gibt es dafür, außer in speziellen Situationen, keinen
Grund. Wer es ganz ohne grafische Hilfe mag, kann sich ein GUI auch komplett aus dem
Code heraus erzeugen. Aber das ist nichts, was man als Einsteiger machen sollte, denn
der Frustrationsgrad kann dabei sehr schnell sehr hoch werden. Wir verwenden in die-
sem Buch ausschließlich Storyboards.
Erstellen Sie jetzt ein neues Xcode-Projekt. Der im Buch gewählte Name entspricht dem
Namen einer »echten« App, die Sie auch im App Store finden können: Diesen Namen
müssen Sie nicht übernehmen, er ist für das Verständnis der Beispiele nicht relevant,
allerdings erleichtert es die Nachvollziehbarkeit natürlich erheblich, wenn Ihr Code
dem im Buch entspricht.
Als Xcode-Template für die App wählen Sie iOS � Application � Single View Applica-
tion (siehe Abbildung 5.5). Ist Ihnen eigentlich schon aufgefallen, dass es in Xcode
Application und nicht App heißt? Die Wege von Apple sind eben unergründlich …
4090-1.book Seite 200 Freitag, 2. Dezember 2016 9:00 21
5.1 Erstellen von Benutzeroberflächen
201
5
Abbildung 5.5 Eine neue Single-View-Application
Im nächsten Schritt des Projektassistenten geben Sie der App einen beliebigen Namen
oder übernehmen den von uns gewählten. Wählen Sie als Sprache aber in jedem Fall
Swift aus (siehe Abbildung 5.6).
Abbildung 5.6 Es wird ernst.
4090-1.book Seite 201 Freitag, 2. Dezember 2016 9:00 21
5 An der Oberfläche
202
5.1.2 Der Tabbar-Controller
Sobald das GUI einer App mehr als eine View besitzt, empfiehlt sich die Verwendung des
Tabbar-Controllers. Ein Beispiel für die Verwendung des Tabbar-Controllers ist die App-
Store-App vom iPhone. Sie sehen am unteren Bildrand verschiedene Schaltflächen,
über die Sie auf verschiedene Unteransichten wechseln können (siehe Abbildung 5.7).
Abbildung 5.7 Der Tabbar-Controller in der App-Store-App von Apple
Der Tabbar-Controller ist geradezu prädestiniert für das Storyboard, denn darin kann
man bequem die entsprechenden Verbindungen ziehen und editieren.
Löschen Sie den von Xcode automatisch im Storyboard gesetzten View-Controller, und
ziehen Sie aus der Objektbibliothek unten rechts im Xcode-Fenster einen Tab Bar Con-
troller (siehe Abbildung 5.8) in das Storyboard.
4090-1.book Seite 202 Freitag, 2. Dezember 2016 9:00 21
5.1 Erstellen von Benutzeroberflächen
203
5
Abbildung 5.8 Ein Tabbar-Controller in der Objektbibliothek
Das Storyboard sollte nun aussehen wie in Abbildung 5.9. Markieren Sie den Tabbar-
Controller mit der Maus, und legen Sie dann rechts im Attributes inspector 1 im
Utilities-Bereich (das ist der dritte Inspector von rechts) fest, dass er der Initial View
Controller ist (rechter Pfeil in Abbildung 5.9). Falls der Attributes inspector nicht
angezeigt wird, können Sie ihn über den Menüpunkt View � Utilities � Show Attribu-
tes Inspector öffnen.
Abbildung 5.9 Der Tabbar-Controller im Storyboard
4090-1.book Seite 203 Freitag, 2. Dezember 2016 9:00 21
5 An der Oberfläche
204
Views, Controller, View-Controller
Sie haben jetzt von Views gelesen, von Controllern, von Tab-Controllern und von View-
Controllern. Das klingt verwirrender, als es ist. All das gehört in ein Konzept mit der
Bezeichnung Model View Controller (MVC). Die iOS-Programmierung ist auf MVC aufge-
baut. Was sich dahinter verbirgt, erfahren Sie im Abschnitt »MVC« in Abschnitt 6.3.4.
Eine View dient dazu, etwas anzuzeigen. Er ist das, womit der Benutzer interagiert. Eine
View ist auch das, was Sie im Storyboard sehen. Es gibt die simple Ausführung, es gibt
aber auch spezialisierte Ausführungen, wie zum Beispiel eine Tabbar. Die View und alle
weiteren Elemente für die Anzeige und Interaktion gehören zur View-Schicht des MVCs.
Die Datenhaltung einer App und die Berechnung sowie alle weiteren spezifischen Funk-
tionen befinden sich in der Model-Schicht. Der Vermittler zwischen View und Model ist
die Controller-Schicht. Und damit erklärt sich auch der Begriff des View-Controllers
(Tabbar-Controllers etc.). Diese Objekte verbinden die entsprechenden View-Elemente
mit dem Model. Im Storyboard werden Sie daher keine alleinstehenden Views finden,
sondern nur Views in Verbindung mit Controllern, also View-Controller.
Wenn Sie die App nun übersetzen und starten, sehen Sie im Simulator einen Tabbar-
Controller mit zwei Items (siehe Abbildung 5.10).
Abbildung 5.10 Der Tabbar-Controller in Aktion
Im nächsten Schritt ändern Sie die Beschriftung der einzelnen Tabs des Tabbar-Control-
lers. Der Tabbar-Controller, den Sie dem Storyboard hinzugefügt haben, besteht aus
dem eigentlichen Tabbar-Controller und zwei View-Controllern. Das Ändern der Be-
4090-1.book Seite 204 Freitag, 2. Dezember 2016 9:00 21
5.1 Erstellen von Benutzeroberflächen
205
5
schriftung nehmen Sie nicht direkt im Tabbar-Controller vor, sondern in den jeweiligen
View-Controllern.
Klicken Sie mit der Maus im linken Bereich auf das Tabbar-Item (Item 1), ändern Sie im
Attributes Inspector den Title auf »Schöne Orte«, und drücken Sie (¢) (siehe
Abbildung 5.11).
Abbildung 5.11 Titel des ersten View-Controllers
Diese Änderung wird auch sogleich im Tabbar des Tabbar-Controllers sichtbar (siehe
Abbildung 5.12).
Abbildung 5.12 Das Tabbar-Item mit dem neuen Titel
Ändern Sie anschließend den Titel des zweiten View-Controllers auf die gleiche Weise in
»Über« (siehe Abbildung 5.13).
Abbildung 5.13 Und noch ein neuer Name
4090-1.book Seite 205 Freitag, 2. Dezember 2016 9:00 21
5 An der Oberfläche
206
Das sieht aber noch nicht schön aus. Oberhalb der Titel ist noch viel Platz. Dieser Platz
ist für Icons reserviert. Eine iPhone-App ohne ansprechendes GUI wird beim User gna-
denlos durchfallen, daher kommen Sie um die Verwendung schöner Grafiken und Icons
nicht herum.
Wenn Sie schon mit einem Programm wie Photoshop oder Sketch umgehen können,
können Sie Ihre Icons selbst erstellen. Denken Sie dabei unbedingt daran, Ihre Icons
auch auf dem tatsächlichen Gerät zu testen. Sonst laufen Sie Gefahr, dass der Nutzer
nicht erkennen kann, worum es sich dabei handeln soll.
Sie können sich aber auch die Arbeit von professionellen Designern zunutze machen.
Auf Seiten wie http://glyphish.com oder https://thenounproject.com gibt für wenig Geld
Icons oder ganze Icon-Archive zu kaufen. Gerade wenn Sie vorhaben noch weitere Apps
zu erstellen, sollten Sie einmal in ein solches Icon-Archiv investieren. Die Icons können
Sie dann beliebig in Ihren Projekten verwenden.
Grafiken zur App
Um Ihnen die Arbeit zu erleichtern, befinden sich auf der Webseite zum Buch (https://
www.rheinwerk-verlag.de/4094) alle Grafiken der Beispiel-App, so dass Sie die Grafiken
beim Nachprogrammieren ohne Umwege zur Verfügung haben.
Abbildung 5.14 Platzhalter für das App-Icon
4090-1.book Seite 206 Freitag, 2. Dezember 2016 9:00 21
5.1 Erstellen von Benutzeroberflächen
207
5
Xcode verwendet zur Verwaltung von Icons und Grafiken sogenannte Assets. Das sind
Container, in denen Grafiken abgelegt werden. Laden Sie sich die Grafiken der Beispiel-
App von der Webseite des Buches herunter, und öffnen Sie das Verzeichnis AppIcon im
Finder. Öffnen Sie nun in Xcode den Asset-Katalog, indem Sie die Datei Assets.xcassets
anklicken. Im Asset-Katalog befindet sich schon ein Platzhalter für das App-Icon (siehe
Abbildung 5.14).
Ziehen Sie nun die App-Icon-Dateien aus dem Finder auf die entsprechenden leeren
Stellen. Dabei landet [email protected] beispielsweise auf dem Platz für iPhone Spot-
light - iOS 5,6 Settings - iOS 5-10 29pt, 3x und Icon-29.png auf iPhone Spotlight
- iOS 5,6 Settings - iOS 5-10 29pt, 2x usw. (siehe Abbildung 5.15).
Abbildung 5.15 »Einsortieren« der Grafiken
1x, 2x und 3x steht dabei für die Skalierung. Ein Icon der Größe 40 pt, 3x hat somit eine
Kantenlänge von 120 Pixeln und ist demnach identisch mit einem Icon der Größe 60 pt,
2x. Daher finden Sie im Ordner auch keine Datei mit dem Namen [email protected].
Ziehen Sie im Anschluss den Inhalt des Verzeichnisses AppIcon in den linken Bereich
unterhalb des Icon-Assets (siehe Abbildung 5.16).
4090-1.book Seite 207 Freitag, 2. Dezember 2016 9:00 21
5 An der Oberfläche
208
Abbildung 5.16 Hinzufügen der restlichen Icons
Übersetzen und starten Sie die App. Anschließend beenden Sie sie wieder. Wie durch
Zauberhand ist auf dem Simulator nun die App mit einem hübschen Icon zu sehen
(siehe Abbildung 5.17).
Abbildung 5.17 Das neue App-Icon in Aktion
4090-1.book Seite 208 Freitag, 2. Dezember 2016 9:00 21
5.1 Erstellen von Benutzeroberflächen
209
5
Jetzt können Sie die Icons im Storyboard den jeweiligen View-Controllern zuweisen.
Öffnen Sie dazu das Storyboard, und wählen Sie, wie beim Umbenennen der Tabs, den
Tab des ersten oberen View-Controllers aus. Im Utilities-Bereich von Xcode können Sie
dann in den Dropdown-Feldern Image und Selected Image das passende Icon aus-
wählen (star_empty und star_filled, siehe Abbildung 5.18).
Abbildung 5.18 Zuweisen eines Icons zum Tabbar-Item
Wiederholen Sie den Vorgang für den View-Controller Über (info_empty und info_
filled), so dass die Tabbar anschließend wie in Abbildung 5.19 aussieht.
Abbildung 5.19 Die fertige Tabbar
Wie Sie sicher bemerkt haben, haben wir für jedes Tabbar-Item zwei Icons gesetzt, eines
für den Zustand, wenn das Item ausgewählt ist, und eines für den Zustand, wenn es
nicht ausgewählt ist. Diese Herangehensweise ist üblich, und daher finden Sie in den
meisten Icon-Archiven, die Sie im Internet kaufen können, Icons für beide Zustände.
Die Icons für den ausgewählten Zustand sind dabei meist in irgendeiner Art gefüllt. Wie
4090-1.book Seite 209 Freitag, 2. Dezember 2016 9:00 21
5 An der Oberfläche
210
Apple sich das vorstellt mit den Icons, können Sie sich in den mitgelieferten Apps auf
Ihrem iPhone anschauen, wie zum Beispiel in der App-Store-App.
5.2 Der Tableview-Controller
Die wohl meistgenutzte Ansicht für die Darstellung von Daten ist unter iOS die Table-
view. Eine Tableview stellt, wie der Name schon sagt, Daten in einer Tabelle dar. Man
kann von jeder Zeile einer Tabelle in eine Unteransicht verzweigen und auf diese Weise
komplexe Datenstrukturen übersichtlich darstellen. Ein Beispiel für eine Tableview fin-
den Sie in der Einstellungen-App des iPhones (siehe Abbildung 5.20).
Abbildung 5.20 Die Einstellungen sind in einer Tableview organisiert.
Repräsentiert wird eine Tableview von der Klasse UITableView. Diese Klasse werden Sie
nun verwenden, um die Beispiel-App mit Daten anzureichern. Fügen Sie im Storyboard
4090-1.book Seite 210 Freitag, 2. Dezember 2016 9:00 21
Auf einen Blick
Auf einen Blick
1 Ein kleiner Schritt … .................................................................................................. 11
2 Programmierung für Einsteiger und Eingerostete ......................................... 67
3 Von der Idee bis in den App Store – die Theorie ............................................. 135
4 Nachts ist jede Theorie grau .................................................................................. 171
5 An der Oberfläche ...................................................................................................... 197
6 Feinschliff, Testen und Hochladen ...................................................................... 271
7 Zeichnen wie ein Profi .............................................................................................. 333
4090-1.book Seite 3 Freitag, 2. Dezember 2016 9:00 21
5
Inhalt
Vorwort .......................................................................................................................................................... 9
1 Ein kleiner Schritt … 11
1.1 Die Geschichte der Apps ....................................................................................................... 17
1.2 Was brauche ich, um eine App zu programmieren? ................................................ 22
1.2.1 Die Hardware ............................................................................................................. 23
1.2.2 Wie kann ich verschiedene Gebrauchtgeräte vergleichen? ....................... 29
1.2.3 Was brauche ich noch an Hardware? ................................................................ 31
1.2.4 Die Software ............................................................................................................... 32
1.2.5 Und was brauche ich noch? .................................................................................. 33
1.2.6 Die wichtigsten Bestandteile von Xcode .......................................................... 36
1.2.7 Das Apple-Entwicklerprogramm ......................................................................... 39
1.3 Swift: Apples neue Programmiersprache ..................................................................... 43
1.3.1 Das steckt hinter Swift ........................................................................................... 44
1.3.2 Warum eine neue Programmiersprache? ........................................................ 45
1.4 Die erste App ............................................................................................................................. 45
1.4.1 Hallo Welt ................................................................................................................... 51
1.5 Zusammenfassung ................................................................................................................. 65
2 Programmierung für Einsteiger und Eingerostete 67
2.1 Der Playground – mal wieder Kind sein ........................................................................ 68
2.2 Programmieren in Swift ....................................................................................................... 70
2.2.1 Kommentare .............................................................................................................. 70
2.2.2 Datentypen und Variablen .................................................................................... 71
2.2.3 Konstanten ................................................................................................................. 77
2.2.4 Typsicherheit und Typinferenz ............................................................................ 78
2.2.5 Kollektionen ............................................................................................................... 81
2.2.6 Kontrollstrukturen ................................................................................................... 86
2.2.7 Optionale Werte ....................................................................................................... 94
2.2.8 Operatoren ................................................................................................................. 98
4090-1.book Seite 5 Freitag, 2. Dezember 2016 9:00 21
Inhalt
6
2.2.9 Funktionen und Closures ....................................................................................... 100
2.2.10 Klassen, Objekte und objektorientierte Programmierung ......................... 108
2.2.11 Enums und Structs .................................................................................................. 124
2.2.12 Protokolle und Generics ......................................................................................... 128
2.3 Wie wird aus dem Quelltext eine App? ......................................................................... 132
2.3.1 Der Compiler .............................................................................................................. 132
2.3.2 Der Linker .................................................................................................................... 133
2.4 Zusammenfassung ................................................................................................................. 133
3 Von der Idee bis in den App Store – die Theorie 135
3.1 Zehn Regeln für eine erfolgreiche App .......................................................................... 135
3.1.1 Halten Sie sich an Apples Vorgaben .................................................................. 136
3.1.2 Was ist das Alleinstellungsmerkmal meiner App? ....................................... 137
3.1.3 Ist alles sauber programmiert? ........................................................................... 138
3.1.4 Wie gut lässt sich meine App bedienen? ......................................................... 140
3.1.5 Welcher Preis ist angemessen? ........................................................................... 142
3.1.6 Kann ich für regelmäßige Updates sorgen? .................................................... 144
3.1.7 Läuft meine App auch auf anderen iOS-Geräten? ........................................ 144
3.1.8 Wie ernst nehme ich meine Kunden? ............................................................... 145
3.1.9 Wie gut ist meine App ins Netz eingebunden? ............................................. 146
3.1.10 Wie viel Zeit und Geld kann ich in Werbung und das
Marketing stecken? ................................................................................................. 147
3.2 Das geht gar nicht – einige No-Gos der App-Programmierung ......................... 147
3.3 Apple, der Türsteher – welche Bedingungen muss eine App erfüllen? .......... 149
3.3.1 Apps, die Sie sich sparen können zu programmieren .................................. 151
3.3.2 Warum Sie sich besondere Mühe geben sollten ........................................... 153
3.3.3 Nicht nur auf die App selbst kommt es an ...................................................... 154
3.3.4 Hier kennt Apple kein Pardon .............................................................................. 156
3.3.5 Wann wird Apple richtig sauer? .......................................................................... 156
3.3.6 Apple und der erhobene Zeigefinger ................................................................. 156
3.3.7 Was tun, wenn meine App abgelehnt wurde? ............................................... 159
3.4 Geld verdienen mit Apps ..................................................................................................... 160
3.4.1 Auf in den Massenmarkt! ...................................................................................... 160
3.4.2 Erst anfixen, dann kassieren ................................................................................ 161
3.4.3 Spezialsoftware für Unternehmen & Co. ........................................................ 162
4090-1.book Seite 6 Freitag, 2. Dezember 2016 9:00 21
Inhalt
7
3.4.4 Geld verdienen mit Werbung ............................................................................... 163
3.4.5 Und sonst? .................................................................................................................. 164
3.5 Wie vermarkte ich eine App? ............................................................................................. 165
3.5.1 In die Öffentlichkeit mit Blogs & Co. ................................................................. 166
3.5.2 Die Sache mit den Promocodes ........................................................................... 167
3.5.3 Anlocken via Twitter und Facebook ................................................................... 168
3.5.4 Anlocken mit Preissenkungen und Lite-Versionen ....................................... 169
3.6 Zusammenfassung ................................................................................................................. 170
4 Nachts ist jede Theorie grau 171
4.1 Das Fundament ........................................................................................................................ 171
4.1.1 Die Ursprünge von iOS ............................................................................................ 174
4.1.2 Meilensteine der Entwicklung – von iOS 1 bis iOS 10 .................................. 177
4.1.3 Vom Ur-iPhone bis in die Gegenwart ................................................................ 182
4.1.4 Die iPad-Familie ........................................................................................................ 187
4.1.5 Auf welcher Hardware läuft iOS eigentlich? ................................................... 191
4.2 Aufbau von iOS ......................................................................................................................... 192
4.2.1 Core OS ......................................................................................................................... 193
4.2.2 Core Services .............................................................................................................. 194
4.2.3 Media ............................................................................................................................ 195
4.2.4 Cocoa Touch ............................................................................................................... 195
5 An der Oberfläche 197
5.1 Erstellen von Benutzeroberflächen ................................................................................. 197
5.1.1 App-Design mit Storyboards ................................................................................ 199
5.1.2 Der Tabbar-Controller ............................................................................................. 202
5.2 Der Tableview-Controller ..................................................................................................... 210
5.2.1 Design mit dem View-Controller ........................................................................ 215
5.2.2 Die Datenquelle ........................................................................................................ 218
5.2.3 Eingabemasken ......................................................................................................... 226
5.2.4 Eine schönere Liste ................................................................................................... 267
5.3 Zusammenfassung ................................................................................................................. 269
4090-1.book Seite 7 Freitag, 2. Dezember 2016 9:00 21
Inhalt
8
6 Feinschliff, Testen und Hochladen 271
6.1 Karten und die Außenwelt .................................................................................................. 271
6.1.1 Karten verwenden mit dem MapKit .................................................................. 271
6.1.2 Webseiten an Safari weiterreichen ................................................................... 283
6.1.3 Teilen nach Twitter .................................................................................................. 286
6.2 Die Uhr ......................................................................................................................................... 290
6.2.1 Erstellen eine Watch-App ...................................................................................... 290
6.2.2 Benutzeroberflächen für die Apple Watch ...................................................... 294
6.2.3 Kommunikation zwischen iPhone und Watch ............................................... 297
6.3 Arbeit auf dem Gerät ............................................................................................................. 305
6.3.1 Test auf dem eigenen Gerät ................................................................................. 306
6.3.2 Beschleunigungssensor ......................................................................................... 311
6.3.3 Die Kamera ................................................................................................................. 317
6.3.4 Ein bisschen Theorie zum Abschluss ................................................................. 318
6.4 App in den App Store ............................................................................................................. 322
6.4.1 So kommt die App in den App Store .................................................................. 322
6.4.2 So geht’s weiter: Hilfen aus dem Netz und von außerhalb ....................... 330
6.5 Zusammenfassung ................................................................................................................. 332
7 Zeichnen wie ein Profi 333
7.1 Die Wasserwaage .................................................................................................................... 334
7.1.1 Die UIView .................................................................................................................. 336
7.1.2 Zeichnen mit CoreGraphics .................................................................................. 346
7.1.3 Die y-Achse ................................................................................................................. 348
7.1.4 Die x-Achse ................................................................................................................. 352
7.1.5 Der Mittelpunkt ........................................................................................................ 353
7.1.6 Es kommt Bewegung in die Sache ..................................................................... 356
7.2 Zusammenfassung ................................................................................................................. 358
Glossar ........................................................................................................................................................... 361
Index ............................................................................................................................................................... 365
IVZ.fm Seite 8 Dienstag, 6. Dezember 2016 4:04 16
Index
365
Index
3D-Touch ..................................................................... 187
A
A2DP ............................................................................. 178
Ablehnung .................................................................. 159
Acceset-Katalog ........................................................ 304
Achsen .......................................................................... 313
Addition ........................................................................ 99
Address Book Framework .................................... 194
Adressbuch ................................................................. 177
aGPS .............................................................................. 194
AirPlay .......................................................................... 178
AirPrint ........................................................................ 178
Akku ................................................................................ 29
Align-Button ................................................................ 58
Alkohol ......................................................................... 159
Alleinstellungsmerkmal ....................................... 137
Altersfreigabe ............................................................ 329
Android ................................................................. 13, 150
Anfänger ........................................................................ 67
APIs .................................................................................. 37
App ........................................................................... 11, 45
App Review Board ................................................... 159
App Store ............................................. 12, 34, 135, 322
App Store Review Guidelines .................... 136, 150
App-Beschreibung ................................................... 145
App-Design ................................................................. 199
App-ID .......................................................................... 324
AppKit .......................................................................... 196
Apple Developer Program ...................... 33, 39, 306
Apple Maps ................................................................. 179
Apple TV ............................................ 23, 175, 191, 290
Apple Watch ........................................................ 23, 290
Apple-Entwicklerprogramm ................................. 39
Apple-ID ................................................................ 41, 309
Application-Context ............................................... 298
APSL .............................................................................. 175
Aqua .............................................................................. 175
Äquivalenzoperator ................................................ 127
ARC ................................................................................ 123
Archive ......................................................................... 326
ARM ............................................................................... 174
Array ...................................................................... 81, 223
Assets ............................................................................ 207
Assistant editor ................................................. 59, 231
AT&T ............................................................................. 174
Attributes inspector ..................................... 215, 218
Aufenthaltsort .......................................................... 254
Ausgabebereich ........................................................... 69
Ausschlusskriterien ................................................ 152
Auto Layout Constraints ...................................... 236
Autolayout .................................................................... 57
Automatic Reference Counting � ARC
B
Bar-Button-Item ....................................................... 227
Baseband ..................................................................... 171
Bauplan ........................................................................ 109
Beispiel-App ............................................................... 197
Benchmark .................................................................... 30
Benutzeroberfläche ................................................ 197
Benutzerschnittstelle ............................................. 140
Berners-Lee, Tim ......................................................... 32
Beschleunigungssensor ........................................ 311
Bewegungsprofil ...................................................... 254
Bildergalerie ............................................................... 261
Bildschirmdesign .................................................... 140
Binärdatei ................................................................... 132
Blogs ............................................................................. 166
Bluetooth ....................................................................... 25
Bonjour ........................................................................ 193
Bool .................................................................................. 76
BootCamp ...................................................................... 26
Bounds ......................................................................... 347
break ................................................................................ 93
BSD ................................................................................ 174
Bundespost ................................................................... 45
Bundle-ID .................................................................... 324
Button ............................................................................. 54
C
C ...................................................................................... 194
C++ ................................................................................. 175
Cell ................................................................................. 218
4090-1.book Seite 365 Freitag, 2. Dezember 2016 9:00 21
Index
366
CFNetwork .................................................................. 194
CGContext .................................................................. 347
CGRect ......................................................................... 347
Cisco ............................................................................. 176
CLLocationManager ............................................... 253
Closures .............................................................. 100, 106
CMAcceleration ........................................................ 316
Cocoa ............................................................................... 70
Cocoa Touch .................................... 70, 123, 177, 195
Compiler ..................................................................... 132
Computer ...................................................................... 45
Content Hugging Priority .................................... 275
continue ......................................................................... 93
Controller .......................................................... 204, 319
Cook, Tim ................................................................ 12, 15
Copyright ....................................................................... 35
Core Animation ....................................................... 195
Core Foundation ...................................................... 194
Core Location ............................................................ 194
Core Motion Framework ...................................... 311
Core OS ........................................................................ 193
Core Services ............................................................. 194
CoreGraphics-Framework .................................... 334
CoreLocation ............................................................. 219
CPU ................................................................................... 20
Crash ................................................................................ 95
Custom UI Elements .............................................. 140
Cydia ...................................................................... 15, 150
D
Darwin ......................................................................... 175
Date ........................................................................ 70, 221
Dateisystem ........................................................ 37, 245
Datei-URL ................................................................... 246
Daten ............................................................................ 210
Datenkapselung ....................................................... 113
Datenquelle ............................................................... 218
Datentyp ........................................................................ 71
Debugging .................................................................. 126
Deckkraft .................................................................... 349
Default UI Elements ............................................... 140
Delegate-Pattern ...................................................... 253
Delegation ......................................................... 306, 321
Design .......................................................................... 215
Desktop .............................................................. 192, 197
Devices ........................................................................ 307
Dezimaltrennzeichen ............................................... 76
Dictionary ..................................................................... 83
Display ........................................................... 25, 26, 191
Division ....................................................................... 100
DNS ............................................................................... 193
Double ............................................................................ 76
drawRect ..................................................................... 346
Drogen ......................................................................... 159
Duke Nukem ................................................................ 12
E
Eigenschaft ................................................................ 116
Einfügen ...................................................................... 177
Eingabemasken ........................................................ 226
El Capitan ...................................................................... 23
else if ............................................................................... 87
E-Mail-Programm ................................................... 198
Embed In ............................................................ 226, 229
Englisch .......................................................................... 33
Entwicklerforum ..................................................... 330
Entwicklerkonferenz � WWDC
Entwurfsmuster .............................................. 306, 319
Enums .......................................................................... 124
Erinnerungsfunktion ............................................ 178
Erlaubnis ..................................................................... 254
Extension ................................................................... 300
F
Facebook .................................................. 146, 168, 179
FaceTime .................................................. 178, 179, 189
Familienfreigabe ..................................................... 181
Fehlerbehandlung .................................................. 246
Fehlermeldung ......................................................... 310
Festplatte ....................................................................... 25
FileManager .................................................................. 70
File-Transfer .............................................................. 298
Float ................................................................................. 76
Follower ...................................................................... 271
for ..................................................................................... 89
Fotobibliothek .......................................................... 317
Foundation-Framework .......................................... 69
Frame ........................................................................... 347
Frameworks ............................................................... 193
Frontkamera ............................................................. 189
Funktionen ................................................................ 100
4090-1.book Seite 366 Freitag, 2. Dezember 2016 9:00 21
Index
367
G
Game Center .................................... 21, 156, 178, 324
Game Kit ...................................................................... 196
Geld ............................................................................... 160
Generics ....................................................................... 130
Genre ............................................................................ 155
Geschichte .................................................................... 17
Gesten .......................................................................... 195
Gewaltszenen ............................................................ 159
Giftschrank ................................................................... 95
GPS ................................................................ 21, 183, 194
GPU .................................................................................. 20
Grafik ............................................................................ 206
Grafikkontext ............................................................ 347
Grafikprogrammierung ........................................ 333
Gravitation ................................................................. 313
Guard ............................................................................ 106
GUI ................................................................................... 51
H
H.264 ............................................................................. 195
Hallo Welt ..................................................................... 51
Handbuch ..................................................................... 44
Hardware ....................................................................... 31
HDMI .............................................................................. 24
Hilfslinien ..................................................................... 54
Homescreen ............................................................... 177
Human Interface Design Guidelines ............... 197
I
I Am Rich ....................................................................... 19
iAd ........................................................................ 164, 178
iChat .............................................................................. 195
iCloud ................................................................. 146, 179
IDE .................................................................................... 32
Identifier ..................................................................... 218
if else ............................................................................... 86
iMac .......................................................................... 25, 26
iMessage ...................................................................... 178
In-App-Käufe ................................................... 162, 324
IndexPath ................................................................... 280
Info.plist ...................................................................... 254
Initialisierer ............................................................... 114
init-Methode ................................................... 114, 220
Instruments .................................................................. 37
Int ...................................................................................... 74
Integer ............................................................................. 74
Intel-Prozessoren ....................................................... 23
Interface Builder ........................................ 37, 51, 199
Intermediate Representation ............................. 132
Internet ........................................................................... 25
iOS ........................................................ 21, 109, 174, 192
iOS Human Interface Guidelines ............ 140, 154
iPad ............................................... 13, 22, 144, 187, 188
iPad Air ........................................................................ 189
iPad mini ..................................................................... 190
iPad Pro ....................................................................... 191
iPhone .................................................. 17, 22, 182, 197
iPhone 3G ............................................................. 18, 183
iPhone 3GS ................................................................. 183
iPhone 4 ....................................................................... 183
iPhone 4S .................................................................... 184
iPhone 5 ....................................................................... 184
iPhone 5C .................................................................... 184
iPhone 5S ..................................................................... 184
iPhone 6 ...................................................................... 185
iPhone 6 plus ............................................................. 185
iPhone 6s .................................................................... 187
iPhone 6s plus ........................................................... 187
iPhone 7 ....................................................................... 187
iPhone 7 plus ............................................................. 187
iPhone OS ......................................................... 174, 175
iPhone SE .................................................................... 187
iTunes Connect ......................................................... 328
Ive, Jonathan .............................................................. 180
iZombie ....................................................................... 150
J
Jahresbeitrag ................................................................ 40
Jailbreak .......................................................................... 15
Jobs, Steve .................................................. 32, 174, 175
JPG ................................................................................. 266
K
Kamera ............................................................... 261, 317
Karten ........................................................................... 271
Kategorie ..................................................................... 155
Kernel ........................................................................... 192
Keywords .................................................................... 155
4090-1.book Seite 367 Freitag, 2. Dezember 2016 9:00 21
Index
368
Kippen ......................................................................... 195
Klasse .................................................................. 109, 210
Kollektionen ................................................................. 81
Kommentare ................................................................ 70
Konfiguration ........................................................... 255
Konsole ................................................................. 83, 243
Konstanten ................................................................... 77
Kontrollcenter ............................................................. 21
Kontrollstrukturen .................................................... 86
Koordinaten .............................................................. 253
Kopieren ..................................................................... 177
Kreditkarte ................................................... 41, 42, 307
L
Label ................................................................................ 54
Laptop ............................................................................. 29
Lattner, Chris ............................................................. 132
Laufzeit ........................................................................... 78
LED ................................................................................... 18
Leistung .......................................................................... 29
Lightning ........................................................... 184, 189
Linker ........................................................................... 133
Lite ................................................................................. 169
Lizenzbedingungen ................................................... 42
LLVM ............................................................................ 132
LTE ................................................................................. 184
M
Mac ............................................................................ 23, 60
Mac mini ................................................................. 23, 24
Mac Pro ........................................................................... 26
MacBook ........................................................................ 28
MacBook Air ................................................................. 28
MacBook Pro ................................................................ 28
Mach ............................................................................. 175
Macintosh .............................................................. 24, 32
macOS ..................................................... 23, 32, 34, 174
Mainboard ..................................................................... 25
MapKit ...................................................... 196, 271, 278
Marketing .......................................................... 147, 161
Massenmarkt ............................................................ 160
Maus ................................................................................ 25
Media ........................................................................... 195
Media Player Framework ..................................... 195
Member Center ........................................................ 323
Messages ..................................................................... 298
MessageUI-Framework ......................................... 196
Metadaten .................................................................. 155
Metal ............................................................................... 21
Methode ...................................................................... 109
Microsoft .................................................... 13, 172, 193
Mikrofon ..................................................................... 189
Mikrokernel ............................................................... 175
Minderjährige ........................................................... 159
Mitteilungszentrale ............................................... 178
MKMapView .............................................................. 278
MMS ............................................................................. 177
Model ........................................................................... 319
Model View Controller � MVC
MPEG-4 ........................................................................ 195
Multiplikation .......................................................... 100
Multitasking .............................................................. 178
Multitouch ........................................................ 172, 195
MVC .................................................. 204, 216, 306, 319
N
Navigationbar ........................................................... 227
Navigationsleiste ........................................... 227, 239
NDA .............................................................................. 307
Netz ............................................................................... 146
NeXT ...................................................................... 32, 175
NeXTStep ............................................................. 32, 175
Night Shift .................................................................. 181
No-Gos ......................................................................... 147
Non Disclosure Agreement � NDA
Notifications ............................................................. 322
NSObject ..................................................................... 196
O
Objective-C ......................................................... 32, 175
Objektbibliothek .............................................. 52, 202
Objekte ........................................................................ 108
Objektorientierte Programmierung ................ 109
OLED ............................................................................. 294
Open Source ................................................................. 45
OpenAL ........................................................................ 195
OpenGL ES .................................................................. 195
OpenSSL ...................................................................... 195
OpenStep .................................................................... 175
Operatoren ................................................................... 98
4090-1.book Seite 368 Freitag, 2. Dezember 2016 9:00 21
Index
369
Optional
auspacken ................................................................. 95
Optional Chaining ................................................... 258
Optionale Werte ......................................................... 94
Organization Identifier ........................................... 48
Organization Name .................................................. 48
Organizer .................................................................... 307
OS X ................................................................................. 23
osxentwicklerforum ............................................... 331
Outlet .............................................................................. 61
override ....................................................................... 120
P
Parameter ......................................................... 102, 220
Photoshop .................................................................. 206
Pin-Button ........................................................... 58, 236
Placeholder ................................................................. 239
Play Store ...................................................................... 13
Play-Button .................................................................. 69
Playground ................................................................... 68
Plist ................................................................................ 243
Pocket-PC .................................................................... 172
POSIX ............................................................................ 193
PowerPC ........................................................................ 23
Preis ..................................................................... 142, 148
Pressearbeit ................................................................ 165
print() .............................................................................. 86
Product Name ............................................................. 48
Programmcode ........................................................... 37
Programmierung ....................................................... 67
Project Builder .......................................................... 177
Promotional Codes ................................................. 167
Property ....................................................................... 109
Property List � Plist
Protokoll ...................................................................... 128
Provisioning Profile ................................................ 325
Prozessor ....................................................................... 30
Prüfungen ..................................................................... 17
Pseudocode ................................................................ 109
Punktnotation .......................................................... 114
Q
Quartz ........................................................................... 195
Quellcode ...................................................................... 70
Quelltext ................................................................ 69, 70
R
repeat while .................................................................. 92
Retina .................................................................... 26, 183
RGB ................................................................................ 349
Rhapsody .................................................................... 175
Ritchie, Dennis .......................................................... 174
Röhrenmonitor ........................................................... 26
Rückgabewert ............................................................ 102
Run-Button ................................................................... 49
S
Safari ............................................................................. 283
Scheme ........................................................................ 293
Schichten .................................................................... 319
Schlüsselbundverwaltung ................................... 322
Schlüssel-Wert-Paar ................................................... 84
Schreibweise .............................................................. 106
Schütteln ..................................................................... 195
Screendesign ............................................................. 148
Screenshots ...................................................... 145, 327
SDK ................................................................................... 32
Security Framework ............................................... 194
Segue .................................................................. 272, 279
self ................................................................................. 115
Sensoren ..................................................................... 305
Set ..................................................................................... 85
Sicherheitsmechanismen ....................................... 15
Sierra ................................................................................ 23
Signieren ..................................................................... 310
Simulator ................................................................ 32, 37
Siri ........................................................................... 21, 184
Size Classes ................................................................. 336
Sketch ........................................................................... 206
Skizzenbuch ............................................................... 199
SKU ................................................................................ 328
Smart Watch .............................................................. 290
Smartphone ..................................................... 142, 171
SMS ................................................................................ 171
Social Framework .................................................... 287
Sockets ......................................................................... 193
Sourcecode .................................................................... 70
Spamming .................................................................. 156
Speicherverbrauch ..................................................... 37
Speicherverwaltung ............................................... 123
Spezialsoftware ........................................................ 162
4090-1.book Seite 369 Freitag, 2. Dezember 2016 9:00 21
Index
370
Spiele ............................................................................... 19
Springboard ............................................................... 193
SQLite ........................................................................... 194
Stack-Button .............................................................. 273
Stack-View .................................................................. 273
Standardwert ............................................................ 220
Standort ...................................................................... 253
static ............................................................................. 250
Statusbar ..................................................................... 229
Statusleiste ................................................................. 229
Stop-Button ........................................................... 51, 69
Storyboard ................................................................. 199
String ............................................................................... 72
Structs ................................................................. 124, 219
Subklasse .................................................................... 116
Subtraktion ................................................................... 99
Superklasse ................................................................ 116
Swift ......................................................... 32, 43, 67, 109
switch .............................................................................. 88
Swype ........................................................................... 181
T
Tab ................................................................................. 214
Tabbar ....................................................... 202, 214, 215
Table View Cell ......................................................... 218
Table View Controller ............................................ 211
Tablet ..................................................................... 13, 191
Tableview .................................................................... 210
Target ........................................................................... 290
Taschenlampe .............................................................. 18
Tastatur .......................................................................... 25
Team ............................................................................. 309
Telefon ......................................................................... 171
Telefonnummer ...................................................... 284
Telekom ......................................................................... 45
Test ................................................................................ 306
TestFlight .................................................................... 139
Textfeld ....................................................................... 234
Thompson, Ken ........................................................ 174
Topcharts .................................................................... 142
Türsteher .................................................................... 149
tvOS .............................................................................. 192
Twitter .......................... 146, 168, 178, 179, 271, 286
Type-Methode .......................................................... 250
Typinferenz .................................................................. 78
Typsicherheit ............................................................... 78
U
Übersetzungszeit ....................................................... 78
UIImagePickerController ..................................... 261
UIKit ............................................................................. 196
UIKit-Framework ....................................................... 69
UITableView .............................................................. 210
UITableViewController ......................................... 216
UITableViewDelegate ............................................ 261
UIViewController .................................................... 232
UMTS ............................................................................ 183
Unix .............................................................................. 174
Unix V1 ........................................................................ 174
unsigned ........................................................................ 74
Unteransichten ........................................................ 202
Update ......................................................................... 144
Upload ......................................................................... 329
USB ................................................................................... 24
User Interface .................................................... 37, 140
User-Info ..................................................................... 298
Utilities ................................................................. 52, 203
V
Variablen ....................................................................... 71
Vererbung .................................................................. 116
Vergleichsoperator .................................................... 98
Vermarktung ............................................................ 147
View ........................................................... 198, 204, 319
View-Controller .............................................. 204, 213
viewDidAppear ........................................................ 256
viewDidLoad ................................................................ 64
Volume Purchasing ................................................ 163
W
WatchConnectivity Framework ........................ 297
watchOS ............................................................. 192, 290
Watch-Simulator ..................................................... 293
WCSession .................................................................. 298
WCSessionDelegate ................................................ 299
Webseite ..................................................................... 283
Werbung .................................................. 147, 148, 163
Werkzeugleiste ............................................................ 49
Wertebereich ................................................................ 75
while ................................................................................ 92
Windows .............................................................. 26, 140
4090-1.book Seite 370 Freitag, 2. Dezember 2016 9:00 21
Index
371
Windows Phone Store ............................................. 13
WKInterfaceController .......................................... 294
WLAN .............................................................................. 25
WPS ................................................................................ 194
WWDC ............................................................................ 67
X
Xcode ...................................... 32, 33, 35, 45, 144, 215
XIB .................................................................................. 200
Z
Zeile ............................................................................... 224
Zeitstempel ................................................................ 266
Zensur .......................................................................... 137
Zertifikat ............................................................ 322, 323
Zertifikatsassistent ................................................. 322
Zigaretten ................................................................... 159
Zulassungsrichtlinien ............................................ 137
Zuweisungsoperator ................................................. 98
4090-1.book Seite 371 Freitag, 2. Dezember 2016 9:00 21
Jörg Brunsmann, Dominik Hauser, Klaus M. Rodewig
Apps programmieren mit Swift – Ideal für Programmiereinsteiger371 Seiten, broschiert, Dezember 2016 29,90 Euro, ISBN 978-3-8362-4090-1
www.rheinwerk-verlag.de/4094
Wir hoffen sehr, dass Ihnen diese Leseprobe gefallen hat. Sie dürfen sie gerne empfehlen und weitergeben, allerdings nur vollständig mit allen Seiten. Bitte beachten Sie, dass der Funktionsumfang dieser Leseprobe sowie ihre Darstel-lung von der E-Book-Fassung des vorgestellten Buches abweichen können. Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschützt. Alle Nut-zungs- und Verwertungsrechte liegen beim Autor und beim Verlag.
Teilen Sie Ihre Leseerfahrung mit uns!
Jörg Brunsmann ist Journalist und arbeitet in der Wirt-schaftsredaktion beim WDR. Dort moderiert er unter anderem das Morgenecho und die Sendung »Profit«. Außerdem schreibt er Einsteigerbücher und ist Gesprächs-partner für Computerthemen bei WDR 2, 1 Live und Funkhaus Europa.
Dominik Hauser ist promovierter Physiker und iOS-Ent-wickler. Er hat bereits zahlreiche Apps im App Store ver-öffentlicht, unter anderem die beliebte Formelsammlung »Phy«. Zurzeit arbeitet er hauptberuflich für die Energy App Provider GmbH, die Apps für Energieanbieter ent- wickelt.
Klaus M. Rodewig ist seit 20 Jahren Software-Entwickler und arbeitet als Entwicklungsleiter in einer Software-Firma. Er ist Mitglied im »Expertenrat Cyber-Sicherheit« des Bun-desamtes für Sicherheit in der Informationstechnik und hält regelmäßig Vorträge zu App-Entwicklung und IT-Sicherheit.
Wissen, wie’s geht.