Πώς να δημιουργήσετε προγράμματα στο iOS. Πώς να δημιουργήσετε μια εφαρμογή για iOS μόνοι σας: οδηγίες βήμα προς βήμα

Παιδικά προϊόντα 24.09.2019
Επισκόπηση προγράμματος Η έκδοση υπολογιστή του Microsoft Excel Viewer θα επιτρέψει...

Αυτή είναι η δεύτερη εμπειρία μου με τη δημιουργία μιας εφαρμογής. Μίλησα για το πρώτο αναλυτικά μέσα - εκεί μιλούσαμε για προσέλκυση επενδύσεων, επιλογή προγραμματιστών κτλ. Δυστυχώς, η πρώτη τηγανίτα βγήκε άμορφη.

Απογοητεύτηκα πολύ από την έλλειψη δεξιοτήτων προγραμματισμού, η οποία επέτρεψε στους προγραμματιστές να στρίψουν τα χέρια τους και να επωφεληθούν από την άγνοια. Ως εκ τούτου, αποφάσισα ότι έπρεπε να κατακτήσω μόνος μου την κωδικοποίηση, καθώς η δημιουργία εφαρμογών και το να μην γνωρίζω πώς να προγραμματίζω σημαίνει να πέφτω σε μια πολύ σοβαρή εξάρτηση, την οποία οι προγραμματιστές γνωρίζουν και συχνά την εκμεταλλεύονται.

Εκπαίδευση

Γενικά πάρθηκε η απόφαση και τον Ιανουάριο του 2016 ξεκίνησα δουλειά. Είμαι εφαρμοσμένος επιστήμονας πληροφορικής στο επάγγελμα, αλλά στην πραγματικότητα, εκτός από τις πιο βασικές δεξιότητες στη συνεργασία με τον Pascal, δεν έμαθα ποτέ τίποτα από το πανεπιστήμιο, και αυτό ήταν πριν από πέντε ή έξι χρόνια. Είχα επίσης μια μικρή εμπειρία από τη δουλειά με HTML και CSS, όταν δημιουργούσα απλές ιστοσελίδες, οι οποίες όμως δεν βοήθησαν πολύ στη δημιουργία εφαρμογών. Ξεκίνησα λοιπόν από τα πολύ βασικά. Από τον αρχαίο και σχεδόν εντελώς ξεχασμένο Πασκάλ. Κατέβασα το πρόγραμμα επεξεργασίας "Free Pascal" http://freepascal.ru/, βρήκα ένα εγχειρίδιο και ξεκίνησα με απλά προγράμματα πρόσθεσης και αφαίρεσης. Συνολικά, χρειάστηκαν περίπου δύο εβδομάδες μαθημάτων, δύο με τρεις ώρες την ημέρα, για να φρεσκάρω τη μνήμη μου.

Η εις βάθος μελέτη του Pascal απαιτούσε περισσότερη εξάσκηση, για την οποία βρήκα το βιβλίο προβλημάτων Pascal του Abrahamyan με 1000 προβλήματα (PDF).

Δεδομένου ότι ήθελα να ξεκινήσω να γράφω εφαρμογές το συντομότερο δυνατό, χωρίς να περιμένω το τέλος του πρώτου σταδίου εκπαίδευσης, παράλληλα με την επίλυση προβλημάτων στο Pascal, άρχισα να σπουδάζω C, σύμφωνα με το βιβλίο "The C Programming Language" - Brian Kernighan και Dennis Ritchie (PDF). Εδώ θα πω χωριστά ότι παρά το γεγονός ότι αυτό το βιβλίο είναι και στα ρωσικά, το μελέτησα στην αρχική γλώσσα, αφού γενικά γνωρίζω αρκετά καλά αγγλικά και αυτό, κατά τη γνώμη μου, είναι πολύ σημαντικό για κάθε άτομο που ασχολείται με τον προγραμματισμό . Υπάρχουν, κατά κανόνα, πολύ περισσότερο εκπαιδευτικό υλικό και απλά υλικά για μια συγκεκριμένη γλώσσα προγραμματισμού στα αγγλικά παρά στα ρωσικά. Δουλεύοντας με το AppStore, κατεβάζοντας την εφαρμογή, όρους χρήσης κ.λπ., όλα αυτά είναι επίσης κυρίως στα αγγλικά. Μπορούμε λοιπόν να πούμε ότι τα αγγλικά σε επίπεδο ανάγνωσης τεχνικής βιβλιογραφίας είναι υποχρεωτική δεξιότητα για έναν προγραμματιστή.

Είχα προγραμματισμό Mac για C από το πρώτο μου έργο. Έλυσα προβλήματα C στο Xcode. Για να κατανοήσω καλύτερα τη διαφορά στη σύνταξη του Pascal και του C, άρχισα να λύνω προβλήματα από το ίδιο βιβλίο προβλημάτων Abrahamyan, αλλά στο C. Μετά από δύο εβδομάδες καθημερινών μαθημάτων 4-5 ωρών, μπόρεσα να λύσω περίπου 300 προβλήματα στο Pascal και τα μισά σε C, καθώς και να διαβάσω περίπου 100 σελίδες ενός βιβλίου για το C. Ταυτόχρονα, αποφάσισα να συνδέσω μια αγγλόφωνη υπηρεσία με τη διαδικασία εκμάθησης - το Tree House.

Αυτή είναι μια υπηρεσία εκπαίδευσης που με βοήθησε πολύ στο mastering HTML και CSS. Η συνδρομή κοστίζει από 25 $ ανά μήνα. Αλλά κατά τη γνώμη μου, αυτό είναι δικαιολογημένο. Η υπηρεσία παρέχει εκπαιδευτικό υλικό σε μια ποικιλία γλωσσών προγραμματισμού, όπως Java, C#, Python, Swift και πολλές άλλες. Η εκπαίδευση πραγματοποιείται σε στάδια, από βίντεο σε βίντεο, με διάφορα ένθετα πρακτικών εργασιών.

Όλα τα βίντεο είναι πολύ οπτικά, ενδιαφέροντα, ενημερώνονται συνεχώς και εξηγούν λεπτομερώς όλα τα βασικά σημεία, είτε πρόκειται για την ίδια την ουσία του Αντικειμενοστρεφούς Προγραμματισμού είτε για τις αρχές της εργασίας στο Xcode. Φυσικά επέλεξα εκπαιδευτικό υλικό στο C και στη δημιουργία εφαρμογών iOS με το Objective-C.

Έτσι, η εκπαίδευσή μου έμοιαζε με μια προσπάθεια να προχωρήσω σε όλα τα μέτωπα ταυτόχρονα. Εξασκήθηκα στην επίλυση προβλημάτων στο Pascal προκειμένου, όπως μου φάνηκε, να βάλω τα θεμέλια του προγραμματισμού όσο το δυνατόν πιο σταθερά, σπούδασα C για να κατανοήσω καλύτερα το Objective-C και τελικά μελέτησα το Objective-C για να ξεκινήσω να γράφω για το IOS το συντομότερο δυνατό.

Έτσι πέρασε άλλος ένας μήνας καθημερινών μαθημάτων κατά μέσο όρο 4-5 ώρες την ημέρα. Από τη μία, ίσως ήταν πιο λογικό να προχωρήσω βήμα-βήμα, ας πούμε, πρώτα να ασχοληθώ με τον Pascal, μετά με τον C και μετά να προχωρήσω στο Objective-C, αλλά στην πραγματικότητα, ήταν η προσπάθεια να καλύψω όλα όσα μου επέτρεψαν τελικά. για να εξοικονομήσω πολύ χρόνο, καθώς άρχισα όλο και περισσότερο να δίνω προσοχή όχι στην επίλυση προβλημάτων σε Pascal και C, αλλά απευθείας στη δημιουργία εφαρμογών από το εκπαιδευτικό πρόγραμμα Tree House. Αυτό ήταν πολύ πιο ενδιαφέρον και ουσιαστικά έδειξε ότι οι εργασίες από το βιβλίο προβλημάτων του Abrahamyan καθώς και τα υλικά από το Kernighan και το βιβλίο του Ritchie στο C είναι καλά για την κατανόηση των βασικών, αλλά γενικά απέχουν αρκετά από την πραγματική διαδικασία δημιουργίας εφαρμογών. Ως αποτέλεσμα, στο τέλος του τρίτου μήνα της εκπαίδευσής μου, σταμάτησα εντελώς την εξάσκηση του Pascal και του C. Αντίθετα, επικεντρώθηκα στα πρακτικά υλικά του Tree House στο Objective-C και σε εφαρμογές κατασκευής στο Xcode.

Δημιουργία παιχνιδιού. Ιδέα

Αφού δημιούργησα μερικές απλές εφαρμογές από το σεμινάριο, αποφάσισα ότι τελικά ήμουν έτοιμος να κάνω κάτι πιο ενδιαφέρον. Έχοντας ανοίξει τη λίστα με τις ιδέες μου, την οποία προσθέτω περιοδικά όταν έρχεται στο μυαλό κάτι δυνητικά ενδιαφέρον, έστρεψα την προσοχή μου στις ιδέες δημιουργίας ενός παιχνιδιού με θέμα «Καταπολέμηση της Διαφθοράς». Το νόημα της ιδέας είναι ότι οι διεφθαρμένοι αξιωματούχοι ενεργούν ως εχθροί, πρέπει να εξουδετερωθούν και τότε ο κόσμος του παιχνιδιού θα γίνει καλύτερος. Υπάρχει επίσης ένα υποκείμενο που λέει ότι η διαφθορά είναι κακή και ότι όσο λιγότερη είναι τόσο καλύτερο το περιβάλλον. Λαμβάνοντας υπόψη ότι το θέμα είναι σχετικό με τη Ρωσία και δεν μπορούσα να βρω εφαρμογές με παρόμοια ιδέα, άρχισα να το κάνω και άρχισα να σκέφτομαι πώς να το εφαρμόσω καλύτερα.

Παρόλο που δεν είχα ιδέα πώς να δημιουργήσω παιχνίδια, αποφάσισα ότι μερικά εκπαιδευτικά βίντεο θα έλυσαν αυτό το πρόβλημα. Πρώτα έπρεπε να αποφασίσουμε πώς θα μοιάζει το παιχνίδι. Μετά από λίγο καταιγισμό ιδεών, αποφασίστηκε ότι η βέλτιστη επιλογή θα ήταν ένα παιχνίδι 2D, όπου ο ήρωας σε κάθε επίπεδο τρέχει από αριστερά προς τα δεξιά και διάφοροι αντίπαλοι και εμπόδια τρέχουν για να τον συναντήσουν. Αυτή η επιλογή μου φάνηκε αποδεκτή για την ιδέα του παιχνιδιού και όχι πολύ δύσκολη στην εφαρμογή.

Αφού εγκρίθηκε η ιδέα και περιγράφηκε εν συντομία, ήταν απαραίτητο να κατανοήσουμε πώς δημιουργούνται τα παιχνίδια. Αφού γκουγκλάρισα ένα βίντεο, έπεσα αμέσως σε ένα που έδειχνε πώς να δημιουργήσετε ένα παιχνίδι όπως το Flappy Bird ( Youtube).Εδώ προέκυψε ένα σημαντικό ερώτημα. Δεν είναι μυστικό ότι η Apple κυκλοφόρησε μια νέα γλώσσα προγραμματισμού το 2014 - τη Swift, η οποία απορρόφησε πολλά καλά πράγματα από το Objective-C και έγινε η λογική της συνέχεια.

Το βίντεο που συνάντησα μιλούσε για τη δημιουργία του Flappy Bird ειδικά στο Swift, αλλά δεν μπορούσα να βρω ένα εξίσου απλό και κατανοητό για το Objective-C. Χωρίς δισταγμό, αποφάσισα ότι το μέλλον εξακολουθεί να ανήκει στη Swift και καλύτερα να μην υστερήσω, ειδικά επειδή το ίδιο Tree House είχε εξαιρετικά υλικά για τη μελέτη του. Ως αποτέλεσμα, έκανα ένα διάλειμμα για να μάθω το Swift, να κατανοήσω τη σύνταξη και τις κύριες διαφορές από το Objective-C. Άλλη μια εβδομάδα μαθημάτων πέρασε, κατά μέσο όρο 8 ώρες την ημέρα. Έψαξα τα βασικά σεμινάρια του Swift και αποφάσισα ότι τελικά ήμουν έτοιμος να παρακολουθήσω το βίντεο για το πώς να φτιάξω ένα Flappy Bird. Σε λίγες μέρες μπόρεσα να δημιουργήσω αυτό:

Έχοντας αποκτήσει μια γενική κατανόηση της εργασίας με τον κινητήρα Sprite Kit, μπόρεσα τελικά να προχωρήσω στην επεξεργασία της εφαρμογής μου.

Εννοια

Στην αρχή, σχεδίαζα να κάνω μόνο τα πιο απλά πράγματα - ένα φόντο κύλισης 3 επιπέδων, έναν ήρωα κινουμένων σχεδίων, όπλα, ικανότητα άλματος και ικανότητα πυροβολισμού. Αυτό ήταν απαραίτητο γιατί, εκτός από τις πιο γενικές ιδέες για τη δουλειά με το Sprite Kit, δεν είχα εμπειρία, έπρεπε να ξεκινήσω με κάτι πολύ απλό. Πώς να καταγράψετε κλικ και να εκτελέσετε άλματα ηρώων, πώς να κάνετε κύλιση στο φόντο, πώς να δημιουργήσετε κουκκίδες τη στιγμή της λήψης κ.λπ. Υπήρχαν δεκάδες ή και εκατοντάδες αυτές οι ερωτήσεις. Και η λύση για όλους ήταν πάντα η ίδια - Google. Ευτυχώς, υπάρχει ένας μεγάλος αριθμός διαφορετικών υλικών στο Διαδίκτυο (δυστυχώς, κυρίως στα αγγλικά) για τη δημιουργία παιχνιδιών στο Swift, τα οποία παρέχουν παραδείγματα επίλυσης διαφόρων ερωτήσεων που μου προέκυψαν. Η υπηρεσία ερωτήσεων/απαντήσεων Stack Overflow παρέχει επίσης τεράστια και ανεκτίμητη βοήθεια.

Νομίζω ότι κατάφερα να λύσω το 70% όλων των ερωτήσεων που είχα με τη βοήθειά του. Γύρισα επίσης στην τεκμηρίωση της Apple, αλλά αρκετά σπάνια. Ίσως στο 10% των περιπτώσεων το μέγιστο, και μετά όταν δεν υπήρχαν άλλες επιλογές.

Μετά από μια άλλη κουραστική εβδομάδα, κατά τη διάρκεια της οποίας αφιέρωσα σχεδόν όλο μου τον χρόνο στον προγραμματισμό - 8-10 ώρες την ημέρα, κατάφερα να δημιουργήσω αυτό:

Μπορούσε να τραντάξει τα πόδια του (ζωγράφισα μόνος μου το animation στο Photoshop), να πηδήξει και να πυροβολήσει από ένα κυνηγετικό όπλο με χαρακτηριστικό ήχο, ενώ ταυτόχρονα το φόντο έκανε κύλιση στο φόντο. Αυτή ήταν η αρχή)

Πρωτότυπο

Αυτό το σκίτσο μου επέτρεψε να καταλάβω πολλά για τους μηχανισμούς του μελλοντικού μου παιχνιδιού και, έχοντας βεβαιωθεί ότι η ιδέα ήταν σωστή, αποφάσισα να προσθέσω εχθρούς που μπορούν να πυροβολούν καθώς και ένα κανονικό σχέδιο ως επόμενο βήμα. Αρχικά, σχεδίαζα να παραγγείλω όλο το σχέδιο (φόντο, κινούμενα σχέδια ήρωα και εχθρού, αντικείμενα κ.λπ.) από έναν ελεύθερο επαγγελματία, αφού αυτό είναι το μόνο που δεν μπορούσα να κάνω μόνος μου. Αλλά μετά θυμήθηκα τον ιστότοπο του Envato Market: http://market.envato.com/, όπου είχα αγοράσει στο παρελθόν μουσική, πρότυπα ιστότοπου, παρουσιάσεις κ.λπ.

Εκτός από αυτά που αναφέρονται στον ιστότοπο, υπάρχει μια μεγάλη ποικιλία από όλα τα είδη κινούμενων εικόνων, υφών, ήχων και άλλων πραγμάτων που είναι εξαιρετικά απαραίτητα κατά τη δημιουργία εφαρμογών. Οι τιμές, κατά τη γνώμη μου, είναι επίσης πολύ λογικές. Για παράδειγμα, το σύνολο κινούμενων σχεδίων του κεντρικού χαρακτήρα που επέλεξα, εκτός από μπόνους σε μορφή διαφόρων αντικειμένων (νομίσματα, διαμάντια κ.λπ.), περιλαμβάνει 8 κινούμενα σχέδια όπως σκοποβολή, τρέξιμο, άλμα, θάνατος κ.λπ.

Αγόρασα αυτό το σετ για $7. Το μόνο σημείο είναι ότι τα αγαθά που αγοράζονται από αυτούς υπόκεινται σε διαφορετικές άδειες. Ορισμένοι, για παράδειγμα, επιτρέπουν τη χρήση ενός προϊόντος μόνο σε ένα προϊόν για απεριόριστη δωρεάν διανομή, άλλοι επιτρέπουν τη μεταπώλησή του σε τρίτους με στόχο την ίδια απεριόριστη δωρεάν διανομή, άλλοι, όπως για τη μουσική, για παράδειγμα, επιτρέπουν τη διανομή μόνο σε περιορισμένος αριθμός ακροατών κ.λπ. Το κόστος αυτών των αδειών ποικίλλει και μπορεί συχνά να διαφέρει κατά 4-5 φορές.

Αλλά επειδή δεν επρόκειτο να πουλήσω τον ήρωα ως ξεχωριστό προϊόν, μια άδεια για την απεριόριστη δωρεάν διανομή του ήταν αρκετή για μένα.

Γενικά, αγόρασα έναν ήρωα, όπλα, εχθρούς και ό,τι χρειαζόταν για το παρασκήνιο. Το ίδιο το φόντο δεν πουλήθηκε ως έχει.

Αυτό είναι το αποτέλεσμα της δουλειάς μου στο Photoshop που δημιουργήθηκε από μερικές δεκάδες διαφορετικά αντικείμενα - φράχτη, άσφαλτο, τρύπες, σωρούς σκουπιδιών κ.λπ. Συνολικά, χρειάστηκαν αρκετές ημέρες για τη δημιουργία. Στη συνέχεια, κοίταξα το Envato περίπου 10 φορές, κάθε φορά αγοράζοντας κάτι άλλο που χρειαζόμουν.

Ακολούθησε η συνηθισμένη, αφενός η ρουτίνα, αλλά ταυτόχρονα πολύ ενδιαφέρουσα δουλειά. Βήμα προς βήμα, έλυσα ορισμένα αναδυόμενα προβλήματα, πρόσθεσα νέες λειτουργίες, έγραψα ξανά φαινομενικά ήδη γραμμένα κομμάτια κώδικα καθώς βρήκα μια επιλογή να τα συντομεύσω, να βελτιστοποιήσω ή να τα βελτιώσω με άλλο τρόπο, να διορθώσω σφάλματα κ.λπ. Φυσικά, αν έγραφα μια τέτοια εφαρμογή τώρα, θα τα είχα κάνει όλα δύο φορές πιο γρήγορα, αλλά εκείνη την εποχή ήταν απολύτως καινούργια για μένα και έπρεπε να αφιερώσω πολύ χρόνο για να βρω καλύτερες λύσεις. Πέρασαν δύο μήνες εντατικής δουλειάς και το πρωτότυπο, όπως προβλεπόταν, τελικά υλοποιήθηκε.

Είχα ένα τελειωμένο επίπεδο με 5 τύπους όπλων, κιτ πρώτων βοηθειών, αντικείμενα, εχθρούς και πολλά άλλα. Στη συνέχεια, αποφάσισα να κάνω τεστ μεταξύ των φίλων μου και να κάνω καταιγισμό ιδεών για να καταλάβω τι έλειπε. Έχουν γίνει αρκετές διορθώσεις και προσθήκες. Τόσο που, σύμφωνα με τις εκτιμήσεις μου, σίγουρα θα δούλευα το παιχνίδι για άλλους έξι μήνες. Τα σκέφτηκα όλα για μερικές μέρες και τελικά κατέληξα σε μια λίστα με αυτά που πραγματικά χρειάζονταν, διέσχισα όλα τα άλλα και αποφάσισα να χρησιμοποιήσω μια μέθοδο από τη διαστημική βιομηχανία για την οποία είχα ακούσει κάποτε. Το θέμα είναι ότι από ένα συγκεκριμένο σημείο, πριν από την εκτόξευση, απαγορευόταν να γίνουν αλλαγές ή βελτιώσεις στον πύραυλο. Διαφορετικά, μπορεί να βελτιωθεί για πάντα.

Ολοκλήρωση του παιχνιδιού

Στη συνέχεια ήρθε το θέμα του σχεδιασμού του εχθρού. Έχω 6 τύπους από αυτούς συνολικά - 5 απλούς εχθρούς και ένα αφεντικό + έναν έντιμο πολίτη. Σχεδίαζα να παραγγείλω να ζωγραφιστούν όλα αυτά τα sprites, γιατί ήθελα οι χαρακτήρες να είναι πιο ζωντανοί. Πήγα στο Freelance.Ru και δημοσίευσα μια αγγελία για τη δημιουργία 5 χαρακτήρων, με 18 κινούμενα σχέδια (8-25 καρέ) για το καθένα. Τα κινούμενα σχέδια ήταν πολλά, γιατί εκτός από τα τυπικά τρέξιμο, πυροβολισμό, σύλληψη, όρθια κ.λπ., υπήρχαν και κινούμενα σχέδια θανάτου από κάθε είδος όπλου, σε αργή κίνηση ή όχι σε αργή κίνηση. Η φθηνότερη τιμή από έναν αξιόπιστο ελεύθερο επαγγελματία που μου αναφέρθηκε ήταν περίπου 40 χιλιάδες ρούβλια και 1 μήνας εργασίας. Μου φάνηκε λίγο ακριβό, οπότε στράφηκα ξανά στο Envato. Ευτυχώς, μια συλλογή από διαφορετικά sprites από τον ίδιο σχεδιαστή είχε μόλις ανέβει στον ιστότοπο.

Τα Sprites από τη συλλογή του, μαζί με ένα σύνολο κινούμενων σχεδίων, κοστίζουν κατά μέσο όρο 15 $. Το πιο σημαντικό είναι ότι το αρχείο με το sprite περιέχει αρχεία για το πρόγραμμα Spriter.

Ανοίγοντας το Sprite σε αυτό το πρόγραμμα και κατανοώντας το λίγο (είναι πολύ εύκολο να το μάθεις), μπορείς να φτιάξεις απολύτως οποιαδήποτε κινούμενα σχέδια για τους χαρακτήρες σου με διαφορετικά σενάρια. Γενικά, το σκέφτηκα και αγόρασα όλους τους χαρακτήρες στο Envato, μετά το οποίο το επεξεργάστηκα μόνος μου, πρόσθεσα τα απαραίτητα κινούμενα σχέδια και το ανέβασα στην εφαρμογή. Η εργασία με υφές πρέπει να πούμε ότι είναι εξαιρετικά κουραστική και μονότονη. Χρειάστηκε να ανεβάσω το κινούμενο σχέδιο που δημιουργήθηκε από το πρόγραμμα Spriter, στη συνέχεια να το επεξεργαστώ στο Photoshop (ανάπτυξη, ορίστε διαστάσεις), μετά να συμπιέσω, να μετονομάσω, να δημιουργήσω εικόνες 1x, 2x, 3x. Μάλλον μου πήρε τουλάχιστον ένα μήνα για να επεξεργαστώ όλα τα κινούμενα σχέδια. Ένας ολόκληρος μήνας μονότονης και μονότονης δουλειάς, ευτυχώς μπόρεσα να εμπλέξω έναν βοηθό σε αυτή τη δουλειά. Αλλά κατάλαβα όλη τη διαδικασία, έφτιαξα μόνος μου τα κινούμενα σχέδια που ήθελα, επαναλαμβάνοντας όσες φορές χρειαζόταν.

Παράλληλα με την επεξεργασία των textures, συνέχισα να αναπτύσσω το παιχνίδι βήμα προς βήμα. Μετά από δύο μήνες συνεχιζόμενης δουλειάς, είδα επιτέλους το φως στην άκρη του τούνελ. Αλλά δυστυχώς, αποδείχτηκε ότι αναγκάστηκα να σταματήσω τη δουλειά για σχεδόν δύο μήνες, καθώς συσσωρεύτηκαν άλλα πράγματα, συν το καλοκαίρι, και γενικά το έργο τέθηκε σε παύση. Αργότερα επέστρεψα στη δουλειά στις αρχές Οκτωβρίου. Αν και ήλπιζα ότι είχαν μείνει πολύ λίγα, στην πραγματικότητα άρχισαν να εμφανίζονται μπροστά μου προβλήματα που, λόγω απειρίας, ούτε καν τα είχα υποψιαστεί πριν.

Πρώτον, παρά το γεγονός ότι συμπίεσα τις υφές png μου χρησιμοποιώντας αυτήν την ηλεκτρονική υπηρεσία: http://compresspng.com/ru/, αυτό δεν οδήγησε στο να καταλάβουν λιγότερη μνήμη RAM ενώ εκτελούσε η εφαρμογή. Ήταν καιρός να μάθω ότι το μέγεθος της εικόνας δεν είναι ίσο με το μέγεθος της μνήμης RAM που απαιτείται για αυτήν.

Δεύτερον, ανακάλυψα τον υπέροχο κόσμο των διαρροών μνήμης, τα εργαλεία Xcode για την παρακολούθησή τους και όλες τις «χαρές» του «δυνατού κύκλου αναφοράς». Αφού πέρασα το παιχνίδι μου μέσα από τα εργαλεία, ανακάλυψα περίπου 3,5 χιλιάδες διαρροές.

Τρίτον, συνειδητοποίησα ότι η τυπική ανάλυση υφής χαρακτήρων 180x180 για το παιχνίδι μου είναι ουσιαστικά πολύ υψηλή και μπορώ εύκολα να κάνω remake όλα τα κινούμενα σχέδια σε ανάλυση 117x117 χωρίς καμία υποβάθμιση στην ποιότητα. Είναι ενδιαφέρον ότι τη στιγμή της δημιουργίας των κινούμενων εικόνων, ανησυχούσα ότι δεν άφησα τις πηγές σε ανάλυση 360x360. Δεδομένου ότι το μέγεθος της εικόνας 2x ήταν 180x180, η εικόνα 3x, κατά την κατανόηση μου, θα έπρεπε να ήταν 360x360, αλλά από άγνοια δεν τα έφτιαξα και όπως αποδείχτηκε, δόξα τω Θεώ, γιατί τελικά δεν ήταν' δεν χρειάζεται.

Τέταρτον, το παιχνίδι μου, όταν προστέθηκαν όλα τα κινούμενα σχέδια και τα αντικείμενα, άρχισε να επιβραδύνεται αισθητά. Αυτό απαιτούσε πολλή δουλειά για τη βελτιστοποίηση και την προφόρτωση κινούμενων εικόνων, ήχων και άλλων πραγμάτων.

Ως αποτέλεσμα, αναγκάστηκα να επαναλάβω εντελώς τους άτλαντες κινουμένων σχεδίων που δημιούργησα (όπως αποδείχθηκε, όχι για τελευταία φορά) για να μειώσω την κατανάλωση RAM. Συμπιέστε και περικόψτε όλες τις εικόνες, μειώνοντάς τις κατά μέσο όρο κατά 30%. Απορρίψτε τις εικόνες 3x ως περιττές και περιοριστείτε μόνο σε 1x και 2x. Κάντε πολλή δουλειά για τη βελτιστοποίηση και την εξάλειψη των διαρροών μνήμης κ.λπ. Επιπλέον, απαιτήθηκε πολλή δουλειά για να ολοκληρωθεί το ίδιο το gameplay, αφού στην αρχή όλα φαίνονται έτοιμα και χρειάζεται μόνο να προσθέσετε τις τελευταίες πινελιές, αλλά η προσθήκη αυτών των πινελιών απαιτεί πολλή ώρα. Σε γενικές γραμμές, αυτό χρειάστηκε περισσότερο από ένα μήνα, αν και όχι πολύ εντατική εργασία κατά μέσο όρο 4-5 ώρες την ημέρα, καθώς δεν υπήρχε η ευκαιρία να συμμετάσχετε πλήρως στο έργο. Και στις αρχές Νοεμβρίου όλα ήταν λίγο πολύ έτοιμα.

Στη συνέχεια, μεταφορτώστε το στο App Store. Εδώ, χάρη στην προηγούμενη εμπειρία, δεν υπήρχαν ερωτήσεις. Κατά τη διάρκεια της ημέρας έκανα στιγμιότυπα οθόνης, μια απλή περιγραφή, το πρώτο εικονίδιο που μου ήρθε στο μυαλό (παρεμπιπτόντως, μόλις έχετε έτοιμο εικονίδιο, καλύτερα να το εκτελέσετε μέσω αυτής της υπηρεσίας: https://makeappicon.com /, ανεβάζετε το εικονίδιό σας εκεί και σας το δίνει πίσω σε όλα τα απαιτούμενα μεγέθη και αναλύσεις) και λέξεις-κλειδιά (τις επέλεξα χρησιμοποιώντας την υπηρεσία https://sensortower.com/, ο ιστότοπος μπορεί να σας δώσει πολλές χρήσιμες πληροφορίες για σας ή οποιαδήποτε άλλη εφαρμογή, αν και η συνδρομή δεν είναι φθηνή).

Και τώρα η εφαρμογή είναι διαθέσιμη στο AppStore. Ούρα, Ούρα, αλλά όχι πραγματικά.

Σφάλματα, τρομερά φρένα, φωτογραφίες που λείπουν, τρακαρίσματα κ.λπ. Αυτό με περίμενε όταν δοκίμαζα διαφορετικά iPhone με διαφορετικές εκδόσεις IOS. Αμέσως αποδείχθηκε ότι παρά το γεγονός ότι το παιχνίδι λειτουργεί καλά στο IOS 9, στο 10 τρέχει με τρομερά φρένα και κάθε τόσο ο ήχος εξαφανίζεται συνεχώς. Έμεινα «ευχαρίστως» με το δώρο που περιείχε το 10, αλλά δεν υπήρχε πού να πάω και συνέχισα να ψάχνω και να εξαλείφω τα λάθη. Για άλλη μια φορά, έπρεπε να επαναλάβω εντελώς το σύστημα για την τοποθέτηση όλων των υφών στην εφαρμογή, να επαναλάβω πλήρως το σύστημα για την αναπαραγωγή όλων των ήχων και να διορθώσω πολλά πρόσθετα σφάλματα. Η απαραίτητη μετατροπή κώδικα από το Swift 2.0 σε Swift 2.3 κατά την εργασία με το ενημερωμένο XCode άφησε μια ιδιαίτερα ζεστή εντύπωση. Εν ολίγοις, πέρασα για άλλη μια φορά περισσότερο από ένα μήνα για να οριστικοποιήσω τα πάντα και μόνο στις 13 Δεκεμβρίου μπόρεσα να ανεβάσω μια περισσότερο ή λιγότερο λειτουργική έκδοση. Αν και είναι σαφές ότι αυτή δεν είναι η τελευταία ενημέρωση.

Στα τέλη του περασμένου μήνα, ο προγραμματιστής Richard Felix δημοσίευσε ένα διασκεδαστικό άρθρο στο οποίο προσπάθησε να εξηγήσει όσο το δυνατόν πιο ξεκάθαρα και συνοπτικά πώς να δημιουργήσετε μια επιτυχημένη εφαρμογή για iOS. Συγκεκριμένα, μοιράστηκε χρήσιμες συμβουλές για αρχάριους προγραμματιστές, τις δικές του παρατηρήσεις όσον αφορά τον σχεδιασμό προγραμμάτων και τις τελευταίες τάσεις στο App Store.

Ο Richard γνωρίζει όλες τις περιπλοκές της ανάπτυξης από προσωπική εμπειρία, αφού τα τελευταία χρόνια έχει δημιουργήσει μια σειρά από δημοφιλείς εφαρμογές για σύγχρονες πλατφόρμες για κινητές συσκευές και το διαδίκτυο (Are My Sites Up, Stunning, Dispatch και άλλες).

Έτσι, κάποια στιγμή στη ζωή σας, αποφασίσατε να γίνετε προγραμματιστής και να δοκιμάσετε τις δυνάμεις σας στη δημιουργία της δικής σας εφαρμογής iOS. Φοβάστε ότι θα ξοδέψετε πολύ χρόνο (και χρήμα) αναπτύσσοντας ένα πρόγραμμα που κανείς δεν θα χρησιμοποιήσει. Ονειρεύεστε να δημιουργήσετε μια εφαρμογή που θα πωλεί ενεργά ένα χρόνο μετά την κυκλοφορία της, αλλά δεν έχετε ιδέα πώς να το κάνετε. Οι συμβουλές που περιγράφονται παρακάτω θα σας βοηθήσουν να πετύχετε τους στόχους σας.

Βρείτε μια πρωτότυπη ιδέα

Σε κάθε παρουσίαση, η Apple ανακοινώνει εκατομμύρια πωλήσεις συσκευών iOS και φανταστικά αρχεία App Store. Καθοδηγούμενοι από αυτό το γεγονός, πολλοί αρχάριοι προγραμματιστές εσφαλμένα υποθέτουν ότι η δημιουργία ενός άλλου απλού προγράμματος-πελάτη email ή επεξεργασίας φωτογραφιών θα τους επιτρέψει να κερδίσουν εκατομμύρια δολάρια (κατά τη γνώμη τους, αυτό δεν απαιτεί απαραιτήτως να αναρριχηθούν στην κορυφή των γραφημάτων του Apple App Store).

Ωστόσο, παρά την επικράτηση της πλατφόρμας iOS, αυτή είναι μια μεγάλη παρανόηση. Φυσικά, σε αυτή την περίπτωση θα κερδίσετε κάποια χρήματα και θα ανακτήσετε τη διαδικασία ανάπτυξης, αλλά για να επιτύχετε πραγματικά βαρυσήμαντοςεπιτυχία, το πρόγραμμά σας δεν πρέπει μόνο να εκτελεί τις δηλωμένες λειτουργίες, αλλά και να έχει κάποιο είδος πρωτότυπου χαρακτηριστικού, ένα είδος όρεξης που θα το ξεχώριζε από εκατοντάδες ανταγωνιστές και θα προσέλκυε την προσοχή στο γενικό υπόβαθρο.

Ερευνήστε το κοινό-στόχο σας

Το App Store προσφέρει σε οποιονδήποτε έναν πραγματικό θησαυρό με τη μορφή γραφημάτων δημοφιλών εφαρμογών, βάσει των οποίων μπορείτε να αποφασίσετε για την κατηγορία του προγράμματος, να παρατηρήσετε ορισμένα σημεία για τον εαυτό σας και να βρείτε αυτήν την πολύ πρωτότυπη ιδέα.

Επί του παρόντος, μπορούμε να διακρίνουμε τις ακόλουθες τρεις κατηγορίες των πιο δημοφιλών προγραμμάτων στο App Store:


  • Εναλλακτικές εφαρμογές για προγράμματα συστήματος iOS (βελτιωμένες αριθμομηχανές, ημερολόγια, προγράμματα-πελάτες email, προγράμματα επεξεργασίας φωτογραφιών, λίστες εργασιών κ.λπ.). Είναι δημοφιλείς επειδή πολλοί άνθρωποι αντιμετωπίζουν τους περιορισμούς των τυπικών εργαλείων iPhone/iPad και θέλουν να επεκτείνουν τη λειτουργικότητα των συσκευών τους. Η Apple δημιουργεί προγράμματα για τις μάζες (είναι εύχρηστα και εύχρηστα), γι' αυτό οι πιο προχωρημένοι χρήστες υποφέρουν (αν χρειάζεστε περισσότερες δυνατότητες, θα πρέπει να χρησιμοποιήσετε μια εφαρμογή τρίτων - και αυτό είναι προς όφελός μας).

  • Παιχνίδια και μια ποικιλία από αυτά. Ειδικά αυτά που σε αναγκάζουν να μοιράζεσαι την εφαρμογή με φίλους και συναδέλφους, κάτι που είναι πολύ πιο πολύτιμο από οποιοδήποτε διαφημιστικό banner.

  • Εφαρμογές με ελάχιστο αριθμό λειτουργιών που με την πρώτη ματιά φαίνονται έτσιστοιχειώδες ότι πολλοί προγραμματιστές απορρίπτουν τέτοιες ιδέες ακόμη και στο στάδιο της σκέψης για το έργο. Χαρακτηριστικό παράδειγμα είναι ένα πρόγραμμα που ονομάζεται Over, το οποίο σας επιτρέπει να προσθέσετε κομψές λεζάντες στις φωτογραφίες σας. Για έναν προχωρημένο χρήστη, το Over μπορεί να φαίνεται σαν ένα μάλλον περιορισμένο εργαλείο, αλλά πολλοί αρχάριοι είναι απόλυτα ικανοποιημένοι με αυτόν τον "επεξεργαστή φωτογραφιών", κάτι που επιβεβαιώνεται από τις καλές πωλήσεις. Είναι εκπληκτικό πώς η σωστή υλοποίηση μιας μεμονωμένης δηλωμένης συνάρτησης μπορεί να οδηγήσει σε ένα απόλυτα επιτυχημένο πρόγραμμα.


Μην ανακαλύπτετε ξανά τον τροχό και ενημερώνετε συχνά

Πολλές δημοφιλείς εφαρμογές iOS πέτυχαν την επιτυχία τους χάρη στην ακόλουθη δυνατότητα - επιτρέπουν στο χρήστη να εκτελέσει γρήγορα κάποια ενέργεια (επεξεργαστεί μια φωτογραφία, για παράδειγμα), αλλά δεν τον επιβαρύνει με περιττές λειτουργίες και κουμπιά. Δεν χρειάζεται να εφεύρετε ξανά τον τροχό και να δημιουργήσετε ένα πρόγραμμα επεξεργασίας φωτογραφιών με λειτουργία αναπαραγωγής μουσικής.

Βάλτε τον εαυτό σας στη θέση του χρήστη, προσπαθήστε να εστιάσετε στα χαρακτηριστικά που θα το κάνουν πραγματικάχρήσιμος. Δεν είναι καθόλου απαραίτητο να εφαρμόσετε όλες τις ιδέες σας στην πρώτη έκδοση. Μετά την κυκλοφορία του προγράμματος στο App Store, θα έχετε πολλές κριτικές χρηστών, βάσει των οποίων μπορείτε να βγάλετε συμπεράσματα σχετικά με την ανάγκη υλοποίησης αυτής ή αυτής της λειτουργίας.

Επιπλέον, οι τακτικές ενημερώσεις εφαρμογών επιτρέπουν στο προϊόν σας να ακούγεται συνεχώς και να «τρεμοπαίζει» μπροστά στα μάτια των πιθανών αγοραστών στην μπλογκόσφαιρα.

Σχεδιάστε ένα πολύχρωμο εικονίδιο

Ένα όμορφο εικονίδιο είναι το κλειδί για την επιτυχία οποιασδήποτε εφαρμογής ( άρα κανείς; - σημείωμα του συντάκτη). Κρατώντας ένα iPhone ή iPad στα χέρια του, ο χρήστης θέλει πάντα να βλέπει γραφικά υψηλής ποιότητας και ένα «λαχταριστό» σχέδιο στην οθόνη του, το οποίο, όπως λένε, είναι ευχάριστο στο μάτι. Οι άνθρωποι θα είναι πιο πιθανό να δώσουν προσοχή στο πρόγραμμα εάν το τμήμα σχεδιασμού αφιερώσει αρκετό χρόνο και προσπάθεια δημιουργώντας ένα ελκυστικό εικονίδιο επωνυμίας. Τελικά, αυτό θα βοηθήσει την εφαρμογή σας να φτάσει στην κορυφή των γραφημάτων του App Store.

Σε εξειδικευμένους ιστότοπους όπως

Έτσι, σου ήρθε και η σκέψη: « Πώς μπορώ να μάθω να γράφω προγράμματα για iPhone;«, « Πώς μπορώ να φτιάξω τη δική μου εφαρμογή για κινητά;«, « Πώς να κερδίσετε εκατομμύρια χωρίς να κάνετε τίποτα;". Θα προσπαθήσω να απαντήσω στα ερωτήματα αυτά βήμα-βήμα (εκτός από το τελευταίο).

Τι πρέπει να γνωρίζετε από την αρχή

Για να δημιουργήσετε προγράμματα για iOSΑπαιτείται επίσημα να έχετε υπολογιστή Μήλο (iMacή Macbook). Αλλά για να είμαστε απόλυτα ειλικρινείς, χρειάζεστε ένα λειτουργικό σύστημα OS X, τόσοι πολλοί άνθρωποι στην αρχή είναι πονηροί και καταφέρνουν να το χρησιμοποιήσουν Hackintosh (Hackintosh), δηλαδή τρέχουν το OS X σε κανονικούς υπολογιστές - αυτή είναι μια οικονομική επιλογή, παράνομη και αρκετά ενοχλητική από την άποψη της εγκατάστασης. Σας συνιστώ, εφόσον έχετε αποφασίσει να γίνετε προγραμματιστής iOS, να αγοράσετε ένα απλό Macbook ή Mac Mini, ή ακόμα και ένα μεταχειρισμένο (οποιοδήποτε κυκλοφόρησε από το 2010).

Επόμενο - σε τι να γράψω. Αιτήσεις για iOSγραμμένο σε γλώσσες προγραμματισμού Ταχύςή Στόχος-Γ, και όλη η μαγεία συμβαίνει στο πρόγραμμα Xcode(δωρεάν). Ταχύςείναι μια πολύ νέα γλώσσα που εισήγαγε η Apple μόλις πρόσφατα (μέσα του 2014) και τώρα μεταφέρει ενεργά την ιδέα ότι χρειάζεται μόνο να προγραμματίσετε σε αυτήν, είναι το μέλλον, είναι πιο μοντέρνα και πιο γρήγορη. Και έχουν δίκιο, μάθε Ταχύς. Στόχος-ΓΑντίθετα, μια γλώσσα με μακρύ παρελθόν, οπότε είναι πολύ πιο δύσκολο να την κατανοήσουν οι αρχάριοι, κάτι που δεν αναιρεί τη δύναμή της και τον πλούτο των υπαρχουσών εξελίξεων και βιβλίων για αυτήν (κάτι που δεν μπορεί να ειπωθεί για το Swift αυτή τη στιγμή). Κι όμως, επαναλαμβάνω, δίδαξε Ταχύς.

Εάν θέλετε να δημιουργήσετε εφαρμογές πολλαπλών πλατφορμών (ταυτόχρονα για iOS και Android) - μάθετε ΝΤΟ#και χρησιμοποιήστε το περιβάλλον ανάπτυξης Xamarin(έμμισθος). Εάν θέλετε να δημιουργήσετε παιχνίδια πολλαπλών πλατφορμών, κατεβάστε το περιβάλλον ανάπτυξης Unity3D(shareware), μάθετε αυτό που ήδη αναφέρθηκε παραπάνω ΝΤΟ#.

Επίσης, για να εκκινήσετε τις εφαρμογές σας σε iPhone/iPad (ακόμα και στο στάδιο ανάπτυξης) και στη συνέχεια να τις ανεβάσετε στο AppStore, πρέπει να αγοράσετε μια κατάσταση Apple Developerγια $100 το χρόνο. Μετά την αγορά, αυτό σας παρακινεί για άλλη μια φορά να ανακτήσετε τουλάχιστον τα χρήματα :)

Όταν έκανα αυτή την ερώτηση στον εαυτό μου, σκέφτηκα ότι έπρεπε απλώς να πάρω μια καλή χοντρή «Βίβλο» στο Objective-C (να σας υπενθυμίσω, το Swift δεν υπήρχε ακόμα) και να κατανοήσω τη μυστική γνώση της γλώσσας προγραμματισμού κεφάλαιο προς κεφάλαιο. Όλοι συνέστησαν το βιβλίο του Stephen Kochan " Προγραμματισμός Objective-C«. Λανθασμένος!Μην επαναλάβετε το λάθος μου. Ναι, τα βασικά της γλώσσας έγιναν κατανοητά, το βιβλίο είναι καλό, αλλά αυτό είναι ένα βιβλίο αναφοράς και απέχει πολύ από την πραγματική ανάπτυξη εφαρμογών από την αρχή. Για να μάθετε να προγραμματίζετε, πρέπει να "λερώσετε τα χέρια σας", προσπαθώντας να γράψετε το πρώτο, αν και πολύ απλό, αλλά εργαζόμενοςεφαρμογές. Χρειάζεστε μαθήματα με παραδείγματα. Από απλό σε σύνθετο. Είναι επίσης σημαντικό να θέσετε έναν πραγματικό στόχο, την πρώτη εφαρμογή που θέλετε να γράψετε και να κυκλοφορήσετε στο AppStore. Κάθε μάθημα ή βιβλίο πρέπει να σας δίνει γνώσεις που μπορείτε να εφαρμόσετε στο έργο σας. Μην κάνετε το λάθος του «αιώνιου μαθητή» που κάνει μόνο ό,τι σπουδάζει, σπουδάζει, σπουδάζει, αλλά αναβάλλει τη στιγμή της έναρξης της πραγματικής δουλειάς. Για παράδειγμα, έβαλα στόχο στον εαυτό μου να φτιάξω μια ραδιοφωνική εφαρμογή και να την κυκλοφορήσω στο AppStore σε ένα μήνα - και τα κατάφερα.

Αν γνωρίζετε αγγλικά, θεωρήστε τον εαυτό σας πολύ τυχερό, τώρα θα σας πω από πού να πάρετε όλες τις γνώσεις. Δυστυχώς, υπάρχουν πολύ λίγες πληροφορίες στα ρωσικά και συχνά αργούν (και μεταφράζονται από τα αγγλικά).

Ο μαθητευόμενος iOS

Ο καλύτερος ιστότοπος εκπαίδευσης στην αγγλική γλώσσα - RayWenderlich.com. Είναι πολύ ωραίο για τρεις λόγους: 1) μπορείτε να διαβάσετε έναν τόνο μαθημάτων δωρεάν, από τα βασικά μέχρι την προσπάθεια αναπαραγωγής υπαρχουσών επιτυχημένων εφαρμογών (συμπεριλαμβανομένων αυτών στο Swift), και όλα είναι γραμμένα με ειλικρίνεια και χιούμορ. 2) υπάρχουν μαθήματα βίντεο εκεί (αν και επί πληρωμή). 3) Ο πιο σημαντικός λόγος- έχουν βιβλία για αρχάριους που θα σας διδάξουν από την αρχή χρησιμοποιώντας το παράδειγμα της δημιουργίας εφαρμογών, πολύ καθαρά, με εικόνες (καλά, όπως μας αρέσει). Τα βιβλία πληρώνονται (μόνο το πρώτο μέρος δίνεται δωρεάν), αλλά αξίζουν τον κόπο. Τα αγόρασα όλα και έχουν από καιρό πληρώσει για τον εαυτό τους καθώς χτίζουν μια καλή βάση τούβλο τούβλο. Αυτό δεν μπορεί να συγκριθεί με την απλή ανάγνωση διαφορετικών μαθημάτων αναμεμειγμένα στον ίδιο ιστότοπο. Ξεκινήστε αγοράζοντας το The iOS-apprentice (το πρώτο μέρος του οποίου μπορείτε να το κατεβάσετε δωρεάν). Θα σας διδάξει πώς να δημιουργείτε τις πρώτες σας εφαρμογές στο Swift. Έχουν επίσης βιβλία για την ανάπτυξη παιχνιδιών SpriteKit(Το πλαίσιο της Apple για την ανάπτυξη παιχνιδιών).

Ο δεύτερος πιο χρήσιμος πόρος είναι AppCoda. Είναι πιο απλό από το RayWenderlich, αλλά η ουσία είναι η ίδια - διαβάζουμε μαθήματα Swift, μαθαίνουμε από παραδείγματα. Έχουν και δικά τους βιβλία (με πληρωμή), εκτός από δωρεάν μαθήματα.

Τι γίνεται αν δεν γνωρίζετε αγγλικά - ωχ, απλά δεν υπάρχουν τέτοιοι ρωσικοί πόροι Διαδικτύου. Βιβλία στα ρωσικά; Φυσικά, θα βρείτε μερικά βιβλία για το Ozon, αλλά είναι όλα ξεπερασμένα και δεν θα σας διδάξουν τη γλώσσα Swift (προς το παρόν όλα είναι μόνο Objective-C).

Το καλύτερο που μπορώ να σας προσφέρω είναι ο κόμβος «ανάπτυξης iOS» στο Habré, νέα άρθρα εμφανίζονται συνεχώς εκεί, αλλά είναι πολύ χαοτικό.

Πού να βρείτε την απάντηση, κάτι δεν λειτουργεί

Κατά τον προγραμματισμό, θα έχετε συνεχώς ερωτήσεις: δεν ξέρετε πώς να κάνετε κάτι ή κάνετε κάτι, αλλά το πρόγραμμα απαντά με ένα σφάλμα. Μπορείτε να βρείτε απαντήσεις (ή να κάνετε μια ερώτηση) σε δύο ιστότοπους:

StackOverflow- η μεγαλύτερη αποθήκη έτοιμων απαντήσεων στα αγγλικά. Εκεί βρίσκω το 80% των απαντήσεων.

Google- είναι τετριμμένο, απλά πληκτρολογώντας μια ερώτηση στην αναζήτηση, μπορείτε να βρείτε την απάντηση. Εάν δεν λειτουργήσει αμέσως, παίξτε με τη διατύπωση της ερώτησης.

Φρυγανιέρα- παρόμοιο με το StackOverflow, αλλά στα ρωσικά. Είναι ακόμα δύσκολο να βρεθούν απαντήσεις εδώ, καθώς η βάση δεδομένων των ερωτήσεων δεν είναι ακόμη πολύ μεγάλη. Αλλά μπορείτε να ρωτήσετε - υπάρχουν αρκετοί επαγγελματίες στον πόρο που θα σας απαντήσουν.

Ή μπορείτε να με ρωτήσετε. Δωρεάν προς το παρόν :)

Όλα ξεκίνησαν όταν κοίταξα γύρω μου και, μη βλέποντας το αυτοκίνητο των ονείρων μου, αποφάσισα να το σχεδιάσω μόνος μου
Φέρντιναντ Πόρσε

Γεια σου, Χαμπρ. Θέλω να σας πω πώς δημιούργησα την πρώτη μου εφαρμογή iOS και τι προέκυψε από αυτήν.

Ιδέα

Η ιδέα για την εφαρμογή προέκυψε φυσικά: δημιουργήστε κάτι που θα χαρείτε να χρησιμοποιήσετε μόνοι σας. Γράφω σημειώσεις όλη την ώρα. Εξάλλου, κάθε πολυάσχολος άνθρωπος έχει ένα συγκεκριμένο σύνολο γεγονότων που λαμβάνει κατά τη διάρκεια της ημέρας και τα οποία αξίζει να θυμάται. Και αφού όλοι ξεχνάνε (και αυτό είναι φυσιολογικό!), δεν υπάρχει καλύτερη λύση από το να το γράψετε. Πάντα ένιωθα κάποια ταλαιπωρία όταν εργαζόμουν με τις εφαρμογές λήψης σημειώσεων που παρουσιάζονται στο AppStore. Υπερβολική πολυπλοκότητα στη διαχείριση, παρουσία περιττών κατηγοριών, πληθώρα πρόσθετων πληροφοριών - όλα αυτά εμποδίζουν την εφαρμογή να εκτελέσει την κύρια λειτουργία της. Επιπλέον, πολλά από αυτά τα πράγματα φαίνονται απλά άσχημα.

Επομένως, βάζοντας όλα τα στοιχήματα στην απλότητα και την ευκολία, άρχισα να δημιουργώ μια ιδέα. Μοντέλο εφαρμογής με ενιαία λίστα σημειώσεων. Όλα σε ένα μέρος, τι πιο απλό; Εάν κάτι έχει μεγάλη αξία ή συνάφεια, δεν χρειάζεται απαραίτητα να το ονομάσετε, μπορείτε απλώς να μετακινήσετε το πιο σημαντικό στοιχείο στην κορυφή της λίστας. Οι παλιές και περιττές καταχωρήσεις θα μειωθούν σταδιακά και τελικά θα διαγραφούν από τον χρήστη.

Λειτουργικός

Μετά τη σκέψη της ιδέας, έγραψα την κύρια λειτουργικότητα - εκείνα τα πράγματα στα οποία θα ήθελα να εστιάσω στη διαχείριση:

Αρκετά τυπική λειτουργικότητα για αυτό το είδος εφαρμογής, θα συμφωνήσετε. Αλλά αυτή είναι μόνο η κορυφή του παγόβουνου, ο διάβολος βρίσκεται στις λεπτομέρειες.

Εργαλεία

Πριν γράψω τον κώδικα στο Xcode, αναδημιούργησα πλήρως την εμφάνιση της εφαρμογής στο διανυσματικό πρόγραμμα επεξεργασίας Sketch. Αυτό το πρόγραμμα είναι εξαιρετικό για τη γρήγορη δημιουργία διατάξεων. Υπάρχουν πολλά πρόσθετα διαθέσιμα για αυτήν την εφαρμογή, μεταξύ των οποίων υπάρχει το Sketch Preview - προβολή του artboard απευθείας στη συσκευή μέσω του προγράμματος Skala Preview. Απλώς πρέπει να κατεβάσετε τα δωρεάν προγράμματα Skala Preview στον υπολογιστή και την κινητή συσκευή σας και να εγκαταστήσετε το πρόσθετο. Μετά από αυτό, επιλέξτε τον πίνακα που θέλετε, πατήστε τον συνδυασμό Command+P και μέσα σε ένα δευτερόλεπτο η εμφάνιση της εφαρμογής μεταδίδεται στη συσκευή.

Επιπλέον, η εφαρμογή είναι πολύ βολική για τη δημιουργία στιγμιότυπων οθόνης για δημοσίευση στο AppStore. Για κάθε μέγεθος οθόνης, δημιουργήθηκε ένα διαφορετικό σύνολο πινάκων τέχνης, μαζί με τη χρήση στυλ, ο χρόνος που δαπανήθηκε για τη μορφοποίηση ήταν ελάχιστος. Αλλά για τη δημοσίευση λίγο αργότερα.

Ανάπτυξη

Στην εφαρμογή, χρησιμοποίησα μόνο δύο ελεγκτές - ένα απευθείας για όλους, όλες, όλες τις σημειώσεις, το άλλο για να εμφανίσω ένα μικρό σεμινάριο κατά την πρώτη εκκίνηση. Οργάνωσα την εργασία με τη βάση δεδομένων χρησιμοποιώντας το πλαίσιο CoreData.

Μετά τη δημιουργία της βασικής λειτουργικότητας (δημιουργία, διαγραφή, επεξεργασία σημειώσεων), αποφάσισα να βελτιώσω καθεμία από αυτές τις λειτουργίες.

Συμφωνώ, η επεξεργασία κειμένου στο iOS εφαρμόζεται αρκετά άβολα. Εάν κάνετε λάθος σε μια λέξη, για να μετακινήσετε τον κέρσορα στην επιθυμητή θέση, πρέπει να αγγίξετε και, χωρίς να αφαιρέσετε το δάχτυλό σας από την οθόνη, να προσπαθήσετε να μπείτε στην επιλεγμένη περιοχή. Επιπλέον, αφού διορθώσετε το σφάλμα, πρέπει να επιστρέψετε τον κέρσορα πίσω στο τέλος της γραμμής. Στην αίτησή μου, αποφάσισα να επεξεργαστώ ξανά τον μηχανισμό για τη μετακίνηση του δρομέα: για να κάνετε μια αλλαγή σε μια λέξη, πρέπει απλώς να σύρετε στην περιοχή μεταξύ του πληκτρολογίου και της φράσης που πληκτρολογείτε χωρίς να εμποδίζετε την προβολή του κειμένου.

Αποφάσισα να υλοποιήσω μόνος μου τα κινούμενα σχέδια διαγραφής και μετάβασης στην κορυφή και να φέρω την οπτική συνοδεία όσο το δυνατόν πιο κοντά στην πραγματική ζωή. Κάτι έχει αποκτήσει μεγαλύτερη προτεραιότητα - σύρετε προς τα δεξιά και η σημείωση μετακινείται στην κορυφή της λίστας. Για να διαγράψετε, σύρετε προς τα αριστερά και η κινούμενη εικόνα διαγράμμισης θα δείξει πόσο χρόνο χρειάζεται να επεκτείνετε το σάρωση για να ολοκληρώσετε τη διαγραφή. Εάν το διαγράψετε κατά λάθος, πρέπει απλώς να ανακινήσετε τη συσκευή ("Shake") και η σημείωση θα επιστρέψει στην αρχική της θέση.

Για να τονίσω τη σημείωση, χρησιμοποίησα το LongTapGesture και τα τρία κύρια χρώματα της εφαρμογής - λευκό, μπλε και κόκκινο, τα οποία αποτελούσαν την κύρια χρωματική παλέτα.

Αποφάσισα να κάνω τη μετάβαση μεταξύ θεμάτων ημέρας και νύχτας αυτόματη - γιατί κανείς δεν έχει σκεφτεί ακόμη να αλλάξει την εμφάνιση ανάλογα με τη θέση του ήλιου στον ουρανό; Είναι πολύ απλό - μετά το σκοτάδι και μετά την ανατολή του ηλίου, το θέμα αλλάζει και ο χρήστης δεν χρειάζεται να αποσπάται η προσοχή του από τη λήψη σημειώσεων, επειδή η εφαρμογή θα προσαρμόζεται πάντα αυτόματα στις συνθήκες του περιβάλλοντος.

Ονομασία

Το όνομα της εφαρμογής είναι το πιο σημαντικό μέρος κατά την ανάπτυξη, είναι το πρώτο πράγμα που βλέπει ο χρήστης στο κατάστημα. Υπάρχουν πληροφορίες σχετικά με αυτό στο Habré. Αποφάσισα να προσεγγίσω διεξοδικά την επιλογή του ονόματος: πρώτα, πέρασα από τη λίστα με τις 1000 πιο δημοφιλείς λέξεις στην αγγλική γλώσσα και έγραψα κάθε είδους συνδυασμούς που θα ήταν κατάλληλοι για το όνομα μιας εφαρμογής λήψης σημειώσεων για κινητά. εξάλλου, ήθελα να το κρατήσω μέσα σε 8-10 χαρακτήρες. Αλλά ταυτόχρονα, δεν ήθελα να επιλέξω το όνομα SuperNotes ή NotesPlus κλπ, ήθελα κάτι νέο. Μου άρεσε ο συνδυασμός τρελή σημείωση, που κατά λάθος συνάντησα στο Urban Dictionary:
τρελή νότα - εξαιρετική, διασκεδαστική, έκπληξη, απροσδόκητη ή φοβερή

Αμέσως εμφανίστηκε το σύνθημα: MadNotes - Σημειώστε το πάθος σας. Επειδή είχα ήδη έτοιμη μια παλέτα βασικών χρωμάτων (λευκό, μπλε, κόκκινο), αποφάσισα να βρω αμέσως ένα κατάλληλο εικονίδιο. Η κατάσταση με τα λογότυπα για εφαρμογές αυτού του είδους είναι άθλια:

Δεδομένου ότι οι σημειώσεις σε χαρτί γράφονται με μολύβι ή στυλό, αποφάσισα να το εμφανίσω στο εικονίδιο - ένα μολύβι που περιστρέφεται υπό γωνία 45 μοιρών. Αποδείχθηκε έτσι:

Αποτέλεσμα

Δεδομένου ότι το έργο σχεδιάστηκε αρχικά ως έργο σχεδιασμού, αποφάσισα να συμμετάσχω με την αίτησή μου στον εξ ολοκλήρου ουκρανικό διαγωνισμό Ukrainian Design Awards: The Very Best Of στην κατηγορία Digital Design. Είχαν απομείνει αρκετές εβδομάδες πριν από τον διαγωνισμό, κατά τη διάρκεια των οποίων κατάφερα να κάνω μια δημοσίευση στο Behance, όπου έδειξα οπτικά όλες τις κύριες λειτουργίες της εφαρμογής και επίσης κατέγραψα μια προεπισκόπηση βίντεο.
Δεδομένου ότι οι νικητές του διαγωνισμού δεν ανακοινώθηκαν μέχρι την τελευταία στιγμή, ήταν απίστευτα ωραίο να βλέπω τη δουλειά μου στην έκθεση των έργων των νικητών - η κριτική επιτροπή είδε και εκτίμησε την κύρια ιδέα - μια μινιμαλιστική και, ταυτόχρονα, λειτουργική εφαρμογή για τη λήψη σημειώσεων.


Η εφαρμογή βρίσκεται στο AppStore εδώ και αρκετούς μήνες, κατά τη διάρκεια των οποίων έκανα έξι ενημερώσεις και έγραψα ξανά τον κώδικα στο Swift. Η τελευταία έκδοση (1.2) πρόσθεσε συγχρονισμό με το iCloud, επομένως οι σημειώσεις έχουν ήδη μεταφερθεί στο cloud.

Σας ευχαριστώ για την προσοχή σας.
Σημειώστε το πάθος σας

Λοιπόν, ήρθε η ώρα να γράψουμε το πρώτο μας πρόγραμμα για το iPhone μας. Εάν δεν έχετε εγκαταστήσει ακόμα το XCode + iPhone SDK, τότε θα πρέπει να το κάνετε. Λοιπόν, έχουμε εγκαταστήσει και ρυθμίσει το XCode, ξεκινάμε;

Αρχικά, ας μάθουμε τα πιο απλά πράγματα. Ας δημιουργήσουμε ένα πρόγραμμα στο οποίο θα υπάρχει ένα πεδίο κειμένου στο οποίο θα γράφουμε το όνομά μας και ένα κουμπί, κάνοντας κλικ στο οποίο θα αναγράφεται το όνομά μας στον χαιρετισμό. Το πρώτο μας πρόγραμμα θα μοιάζει με αυτό:

Δημιουργούμε το πρώτο μας και ελπίζουμε όχι το τελευταίο έργο:

Στη συνέχεια θα ερωτηθούμε τι είδους εφαρμογή να δημιουργήσουμε. Στα αριστερά στον πίνακα επιλέξτε iPhone OS -> Εφαρμογήκαι στο κεντρικό παράθυρο επιλέξτε τον τύπο του έργου Εφαρμογή που βασίζεται σε προβολή. Ας καλέσουμε το πρώτο μας πρόγραμμα, ας πούμε, FirstApp

Ως αποτέλεσμα, δημιουργούμε ένα έργο με έναν ήδη δημιουργημένο ελεγκτή (το πρώτο παράθυρο του προγράμματός μας)

Το κύριο παράθυρο του έργου μοιάζει με αυτό:

Το Xcode δημιούργησε τον πρώτο ελεγκτή για εμάς, αυτά είναι δύο αρχεία που ονομάζονται FirstAppViewController.h και FirstAppViewController.m

Το αρχείο FirstAppViewController.h λειτουργεί ως κεφαλίδα (εξ ου και η επέκταση αρχείου .h από την κεφαλίδα λέξης Σε αυτό θα ανακοινώσουμε τις μεταβλητές και τις μεθόδους που θα χρησιμοποιήσουμε στο κύριο αρχείο FirstAppViewController.m).

Και έτσι, ανοίξτε το αρχείο FirstAppViewController.h και δημιουργήστε δύο δείκτες:

IBOutlet UILabel *όνομα χρήστη;

Η πρώτη μεταβλητή, όνομα χρήστη, είναι μια ετικέτα κειμένου στην οποία θα γράψουμε το όνομά μας. Το nikField είναι ένα πεδίο κειμένου από όπου θα διαβάσουμε το όνομά μας.

Πρέπει να το γράψετε σε ένα μπλοκ @interface firstAppViewController: UIViewController ( )

Θα δημιουργήσουμε επίσης μια μέθοδο που θα καλούμε όταν πατηθεί το κουμπί για να συστηθούμε. Ας ονομάσουμε τη μέθοδο setNik:

- (IBAction)setNik;

Ως αποτέλεσμα, το αρχείο μας FirstAppViewController.h θα πρέπει να μοιάζει με αυτό:

#εισαγωγή @interface firstAppViewController: UIViewController ( IBOutlet UILabel *όνομα χρήστη; IBOutlet UITextField *nikField;) - (IBAction)setNik;

@τέλος

Τώρα, ας πάμε στο αρχείο FirstAppViewController.m Ας προσθέσουμε εδώ τη μέθοδο setNik. Πρέπει να γράψετε μετά τη γραμμή

@implementation firstAppViewController - (IBAction)setNik( }

username.text = nikField.text;

Εδώ καθορίζουμε ότι όταν εκτελείται αυτή η μέθοδος, το κείμενο από το πεδίο nikField θα γραφτεί στην ετικέτα κειμένου ονόματος χρήστη Πρέπει επίσης να ελευθερώσουμε τη μνήμη από αυτούς τους δείκτες αφού τους χρησιμοποιήσουμε. Αυτό γίνεται με μια μέθοδο που ονομάζεται

dealoc

- (άκυρο)dealloc ( ; ; ; );

Τώρα, ανοίξτε το αρχείο διεπαφής FirstAppViewController.xib Εκκινείται στο πρόγραμμα επεξεργασίας διεπαφής του Interface Builder.


Από τη βιβλιοθήκη στοιχείων, σύρουμε τα στοιχεία που χρειαζόμαστε στο παράθυρο του προγράμματός μας και τα τακτοποιούμε όσο πιο βολικά γίνεται. Στη συνέχεια, στο μικρό παράθυρο, επιλέξτε File’s Owner και πατήστε Command+2, το οποίο μας μεταφέρει στο μενού επιθεώρησης Συνδέσεων. Βλέπουμε εκεί μια λίστα με τα ζώδια μας που έχουμε ήδη γράψει και στα δεξιά τους υπάρχουν κενοί κύκλοι. Κάντε κλικ στον κενό κύκλο δίπλα στον δείκτη nikField και, χωρίς να το αφήσετε, σύρετέ τον στο πεδίο κειμένου. Όταν μετακινούμε το δείκτη του ποντικιού σε αυτά, σκιαγραφείται σε ένα ορθογώνιο και απελευθερώνεται. Έτσι, έχουμε δεσμεύσει αυτό το πεδίο στον δείκτη nikField. Τώρα θα κάνουμε το ίδιο με τον δείκτη του ονόματος χρήστη και θα τον σύρουμε στο κείμενο όπου θέλουμε να δούμε το ψευδώνυμό μας (στην εικόνα μου είναι το κείμενο %username%). Λίγο πιο κάτω βλέπουμε τη μέθοδο setNik και τη συσχετίζουμε με το κουμπί μας. Αλλά όταν το μετακινήσετε στο κουμπί και το αφήσετε, θα εμφανιστεί ένα μενού περιβάλλοντος από το οποίο επιλέξτε Touch Up Inside. Αυτό σημαίνει ότι αυτή η μέθοδος θα λειτουργήσει όταν πατήσουμε και αφήσουμε το κουμπί. Ακριβώς ότι χρειαζόμαστε :)

Λοιπόν, αποθηκεύστε, επιστρέψτε στο Xcode και κάντε κλικ στο Build & Run. Ούρα, το πρώτο μας πρόγραμμα ξεκίνησε :) Κάντε κλικ στο πεδίο κειμένου, εμφανίζεται το πληκτρολόγιο, γράψτε το όνομα. Αλλά το πρόγραμμά μας δεν έχει ακόμα μια μικρή πινελιά. Αυτό γίνεται για να αφαιρέσετε το πληκτρολόγιο πατώντας το κουμπί Τέλος όταν ολοκληρώσουμε την εισαγωγή του ονόματός μας.

Για να το κάνετε αυτό, ας ενεργοποιήσουμε ξανά τον σχεδιαστή διεπαφής και κάντε κλικ στο κουμπί μας. Πατήστε Command+1 και βρείτε το μπλοκ Χαρακτηριστικά εισαγωγής κειμένου εκεί. Έχει πολλές αναπτυσσόμενες λίστες, αλλά μας ενδιαφέρει μόνο η κάτω: Κλειδί επιστροφής. Επιλέξτε Τέλος από τη λίστα και στο κάτω μέρος του μπλοκ βάλτε ένα σημάδι επιλογής δίπλα στο Auto-enable Return Key. Στη συνέχεια πηγαίνουμε στο Command+2 Connections Inspector και βλέπουμε τη λέξη εκεί αντιπρόσωπος. Κάντε κλικ στην κούπα δίπλα της και σύρετέ την στο μπλοκ File’s Owner

Τώρα επιστρέφουμε στο αρχείο μας FirstAppViewController.m Μετά τη μέθοδο setNik, προσθέτουμε τον ακόλουθο κώδικα:

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField ( ; επιστροφή ΝΑΙ?

)

Θα φαινόταν τόσο μικρό πράγμα, απλά σκέψου ότι έγραψαν ένα τόσο μικρό πράγμα. Και όταν μάθαινα τους Δελφούς πριν από πολλά χρόνια, έχοντας μάθει ένα τέτοιο παράδειγμα, ώστε με το πάτημα ενός κουμπιού να γράφει κάτι στην οθόνη, έφτιαχνα ήδη διάφορα παιχνίδια. Θυμάστε ένα από τα πρώτα παιχνίδια του προγράμματος περιήγησης, το Fight Club; Έκανα λοιπόν κάτι παρόμοιο για πλάκα, και όλα βασίστηκαν ακριβώς στην ίδια αρχή που κάναμε μόλις. Παίξτε λοιπόν και πειραματιστείτε!

Εδώ είναι ένας άλλος σύνδεσμος προς το αρχείο του έργου. Μπορείτε να το κατεβάσετε, να το ενεργοποιήσετε και να δείτε αν κάτι δεν λειτούργησε για κάποιον. Λοιπόν, αν έχετε ερωτήσεις, γράψτε στα σχόλια.



Συνιστούμε να διαβάσετε

Κορυφή