iOS 5. Podręcznik programisty - ebook
iOS 5. Podręcznik programisty - ebook
Najlepsze przepisy dla każdego dewelopera!
iOS to jeden z najpopularniejszych systemów operacyjnych wykorzystywanych w urządzeniach mobilnych. Znajdziesz go we wszystkich sprzętach Apple - iPhone...ach, iPadach i iPodach. Różnorodność urządzeń gwarantuje Ci dużą liczbę użytkowników, ale z drugiej strony dostarcza wielu nowych wyzwań. Zastanawiasz się, jak poradzić sobie z codziennymi problemami, pojawiającymi się w trakcie tworzenia aplikacji dla iOS?
W tej książce Erica Sadun - autorka bestsellerów i guru programowania na platformie iOS - umieściła wszystkie informacje potrzebne do tego, abyś jak najszybciej zaczął tworzyć znakomite aplikacje dla urządzeń mobilnych na iOS 5. Znajdziesz tu gotowy do natychmiastowego użycia i łatwy w rozbudowie kod źródłowy, co pozwoli Ci uniknąć konieczności szukania własnych rozwiązań metodą prób i błędów. Przykłady przygotowane i przetestowane przez autorkę dotyczą praktycznie każdej dziedziny programowania na platformie iOS, od tworzenia interfejsu użytkownika, poprzez kontrolery widoku, gesty i dotknięcia, aż do obsługi sieci oraz kwestii bezpieczeństwa.
- Opanowanie iOS 5 SDK, podstaw języka programowania Objective-C oraz cyklu życiowego tworzenia oprogramowania na platformie iOS
- Projektowanie i dostosowanie do własnych potrzeb interfejsu użytkownika przy użyciu modułu Interface Builder i języka Objective-C
- Organizowanie aplikacji za pomocą kontrolerów widoku, widoków i animacji, w tym najnowszego kontrolera widoku strony oraz własnych kontenerów
- Maksymalne wykorzystanie dotknięć i gestów oraz tworzenie własnych procedur rozpoznawania gestów
- Tworzenie od podstaw i używanie kontrolek
- Praca z technologiami Core Image i Core Text
- Implementacja w pełni wyposażonych widoków tabel, włącznie z edycją komórek, zmianą ich kolejności oraz stosowaniem własnych komórek
- Tworzenie magazynów zarządzanych danych, dodawanie, usuwanie, pobieranie i wyświetlanie danych
- Wyświetlanie komunikatów dla użytkownika w postaci okien dialogowych, pasków postępu, powiadomień lokalnych i typu push, okien typu Popover oraz polecenia ping
- Żądanie i obsługa informacji pochodzących od użytkowników
- Nawiązywanie połączenia z sieciami i usługami, obsługa uwierzytelniania oraz zarządzanie pobieraniem danych
- Instalacja aplikacji w urządzeniach iOS, przekazywanie aplikacji testerom wersji beta oraz do sklepu iTunes App Store
Oto książka poświęcona programowaniu na platformie iOS, na którą czekałeś!
Erica Sadun jest autorką bestsellerów oraz współautorką licznych książek o programowaniu. Opracowała dziesiątki aplikacji na platformę iOS, oferuje usługi konsultingowe w zakresie szybkiego tworzenia prototypów aplikacji. Jej artykuły są publikowane w wielu serwisach, między innymi Ars Technica, O...Reilly i LifeHacker. Obecnie regularnie publikuje w serwisie TUAW. Uzyskała tytuł doktora nauk informatycznych na Georgia Institute of Technology.
Spis treści
Podziękowania (21)
O autorce (22)
Wstęp (23)
1. Wprowadzenie do iOS SDK (33)
- Programy twórców iOS (33)
- Online Developer Program (33)
- Standard Developer Program (34)
- Developer Enterprise Program (35)
- Developer University Program (35)
- Rejestracja (35)
- Rozpoczęcie pracy (35)
- Pobieranie SDK (36)
- Urządzenia do tworzenia aplikacji (37)
- Ograniczenia symulatora (38)
- Podłączenie urządzenia do komputera (40)
- Różnice pomiędzy modelami (41)
- Wymiary ekranu (41)
- Kamera (42)
- Dźwięk (42)
- Telefonia (43)
- Różnice związane z Core Location i Core Motion (43)
- Obsługa wibracji i zbliżenia (44)
- Szybkości procesorów (44)
- OpenGL ES (44)
- Ograniczenia platformy (45)
- Ograniczenia przestrzeni na dane (45)
- Ograniczenia dostępu do danych (45)
- Ograniczenia pamięci (46)
- Ograniczenia interakcji (50)
- Ograniczenia energetyczne (50)
- Ograniczenia aplikacji (51)
- Ograniczenia możliwości działań użytkownika (52)
- Ograniczenia SDK (52)
- Korzystanie z serwisu Provisioning Portal (53)
- Zdefiniowanie zespołu (54)
- Uzyskiwanie certyfikatów (54)
- Rejestrowanie urządzeń (55)
- Rejestrowanie identyfikatorów aplikacji (56)
- Akredytacja (57)
- Składanie projektów iPhone w całość (58)
- Szkielet aplikacji iPhone (60)
- main.m (61)
- Delegat aplikacji (63)
- Kontroler widoku (65)
- Uwaga na temat przykładowego kodu prezentowanego w tej książce (66)
- Komponenty aplikacji iOS (67)
- Hierarchia katalogów aplikacji (67)
- Plik wykonywalny (67)
- Plik Info.plist (68)
- Ikona i obrazy rozruchowe (69)
- Pliki narzędzia Interface Builder (72)
- Pliki nienależące do paczki aplikacji (72)
- Archiwa IPA (73)
- Piaskownice (74)
- Paradygmaty programowania (74)
- Programowanie zorientowane obiektowo (75)
- Model-widok-kontroler (75)
- Podsumowanie (83)
2. Obóz treningowy Objective-C (85)
- Język programowania Objective-C (85)
- Klasy i obiekty (86)
- Tworzenie obiektów (88)
- Alokacja pamięci (88)
- Zwalnianie pamięci (89)
- Licznik użycia obiektu (90)
- Metody, wiadomości i selektory (90)
- Niezadeklarowane metody (91)
- Wskaźnik do obiektu (92)
- Dziedziczenie metod (93)
- Deklarowanie metod (93)
- Implementacja metody (93)
- Metody klasy (95)
- Szybkie wyliczenie (96)
- Hierarchia klas (97)
- Wyświetlanie informacji (98)
- Podstawy zarządzania pamięcią (100)
- Zarządzanie pamięcią poprzez MRR (100)
- Zarządzanie pamięcią za pomocą technologii ARC (103)
- Właściwości (104)
- Hermetyzacja (105)
- Zapis z użyciem kropki (105)
- Właściwości i zarządzanie pamięcią (105)
- Deklaracja właściwości (106)
- Tworzenie własnych metod typu getter i setter (108)
- Kwalifikatory właściwości (110)
- Funkcja KVC (111)
- Funkcja KVO (112)
- Technologia MRR i duża wartość licznika użycia (112)
- Inne sposoby tworzenia obiektów (113)
- Usuwanie obiektu z pamięci (114)
- Używanie bloków (117)
- Definiowanie bloku w kodzie (118)
- Przypisywanie odniesień do bloku (119)
- Blok i zmienne lokalne (120)
- Blok i typedef (120)
- Bloki i zarządzanie pamięcią w technologii MRR (121)
- Inne użycie bloków (121)
- Technologia ARC (121)
- Kwalifikatory właściwości i zmiennych (122)
- Licznik odniesień (125)
- Pula zwalniana automatycznie (127)
- Stosowanie technologii ARC - za i przeciw (128)
- Migracja do ARC (128)
- Wyłączenie ARC w projekcie (129)
- Wyłączenie ARC dla poszczególnych plików (130)
- Utworzenie projektu niezgodnego z ARC na bazie szablonu w Xcode (130)
- Reguły dotyczące ARC (131)
- Użycie technologii ARC wraz z Core Foundation i rzutowaniem typów danych (132)
- Rzutowanie pomiędzy Objective-C i Core Foundation (132)
- Wybór odpowiedniego podejścia (134)
- Rozwiązania stosowane w trakcie działania aplikacji (134)
- Wskazówki i podpowiedzi dotyczące pracy z ARC (135)
- Wzorzec Singleton (136)
- Kategorie (rozszerzenia klas) (137)
- Protokoły (138)
- Definiowanie protokołu (138)
- Stosowanie protokołu (139)
- Dodanie wywołań zwrotnych (139)
- Deklaracja opcjonalnych wywołań zwrotnych (140)
- Implementacja opcjonalnych wywołań zwrotnych (140)
- Zgodność z protokołem (141)
- Klasy Foundation (142)
- Ciągi tekstowe (142)
- Liczby i daty (147)
- Kolekcje (149)
- I jeszcze jedno: przekazywanie wiadomości (154)
- Implementacja przekazywania wiadomości (155)
- Operacje czyszczące (156)
- Superłatwe przekazywanie (157.)
- Podsumowanie (157)
3. Budowanie pierwszego projektu (159)
- Utworzenie nowego projektu (159)
- Utworzenie aplikacji na podstawie szablonu (161)
- Utworzenie nowego projektu (161)
- Wprowadzenie do przestrzeni roboczej Xcode (164)
- Przegląd projektu (169)
- Otwórz plik Storyboard dla iPhone'a (170)
- Edycja widoku (171)
- Uruchomienie aplikacji (173)
- Używanie symulatora (174)
- Symulator - co się dzieje w tle? (175)
- Współdzielenie aplikacji symulatora (177)
- Minimalistyczna wersja aplikacji typu Witaj, świecie (178)
- Przeglądanie API SDK (180)
- Konwersja plików modułu Interface Builder na ich odpowiedniki w Objective-C (181)
- Używanie modułu usuwania błędów (183)
- Ustawienie punktu kontrolnego (184)
- Wyświetlenie panelu modułu usuwania błędów (185)
- Analiza etykiety (186)
- Ustawienie innego punktu kontrolnego (187)
- Śledzenie wsteczne (188)
- Konsola (188)
- Dodanie prostego śledzenia (188)
- Zarządzanie pamięcią (189)
- Sposób: użycie narzędzia Instruments do wykrywania wycieków pamięci (190)
- Sposób: użycie narzędzia Instruments do monitorowania alokacji buforowanych obiektów (192)
- Symulacja sytuacji, gdy w systemie pozostało niewiele wolnej pamięci (193)
- Analiza kodu (195)
- Od Xcode do urządzenia - interfejs okna Organizer (196)
- Urządzenia (197)
- Informacje ogólne (197)
- Profile akredytacyjne (197)
- Dzienniki zdarzeń w urządzeniu (197)
- Aplikacje (199)
- Konsola (199)
- Zrzuty ekranu (199)
- Kompilacja dla urządzenia iOS (200)
- Używanie profilu akredytacyjnego programisty (200)
- Dodanie urządzenia, w którym można uruchamiać tworzone aplikacje (201)
- Przeanalizuj identyfikator aplikacji (201)
- Ustawienie urządzenia i tożsamości podpisywania kodu (202)
- Określenie bazowej wersji SDK dla aplikacji (203)
- Kompilacja i uruchomienie aplikacji Hello World (204)
- Podpisywanie skompilowanych aplikacji (205)
- Wykrywanie platformy docelowej podczas kompilacji (205)
- Sprawdzanie zgodności podczas działania aplikacji (205)
- Znaczniki pragma mark (207)
- Ukrywanie treści metod (208)
- Przygotowanie do dystrybucji (208)
- Odszukanie i oczyszczenie aplikacji (208)
- Używanie schematów i akcji (209)
- Dodanie własnej konfiguracji kompilacji aplikacji (210)
- Informacje dotyczące dystrybucji tymczasowej (211)
- Tworzenie pakietu w konfiguracji tymczasowej (212)
- Dystrybucja tymczasowa OTA (213)
- Utworzenie pliku manifestu (213)
- Zgłoszenie aplikacji do iTunes App Store (215)
- Podsumowanie (217)
4. Projektowanie interfejsu użytkownika (219)
- Klasy UIView i UIWindow (219)
- Widoki wyświetlające dane (220)
- Widok przeznaczony do dokonania wyboru (221)
- Kontrolki (222)
- Tabele i kontrolki typu Picker (223)
- Paski (223)
- Pasek postępu i wskaźnik wykonywania operacji (224)
- Kontroler widoku (224)
- Klasa UIViewController (225)
- Klasa UINavigationController (225)
- Klasa UITabBarController (226)
- Kontroler widoku podzielonego (226)
- Kontroler widoku strony (227)
- Kontroler typu Popover (227)
- Kontroler widoku tabeli (227)
- Kontroler książki adresowej (228)
- Klasa UIImagePicker (228)
- Tworzenie wiadomości e-mail (228)
- Klasa UIDocumentInteractionController (229)
- Klasa GKPeerPickerController (229)
- Kontrolery odtwarzania treści multimedialnej (229)
- Geometria widoku (229)
- Pasek stanu (230)
- Paski nawigacyjny, narzędziowy i kart (231)
- Klawiatura i kontrolki Picker (233)
- Pole tekstowe (233)
- Klasa UIScreen (234)
- Tworzenie interfejsu (235)
- Użycie funkcji Storyboard do utworzenia interfejsu użytkownika (235)
- Utworzenie nowego projektu (236)
- Dodanie kolejnych kontrolerów widoku (236)
- Organizacja widoków (237)
- Uaktualnienie klas (238)
- Nazwy scen (238)
- Edycja atrybutów widoku (239)
- Dodanie przycisków nawigacyjnych (239)
- Dodanie kolejnego kontrolera nawigacyjnego (241)
- Nadawanie nazw kontrolerom (241)
- Pokolorowanie pasków nawigacyjnych (241)
- Dodanie przycisku (242)
- Zmiana początkowo wyświetlanego kontrolera (242)
- Dodanie kodu usuwającego widok z ekranu (242)
- Uruchomienie aplikacji (243)
- Użycie okien typu Popover (243)
- Dodanie kontrolera nawigacyjnego (244)
- Zmiana klasy kontrolera widoku (244)
- Dostosowanie do własnych potrzeb widoku okna Popover (245)
- Utworzenie połączeń (245)
- Edycja kodu (245)
- Użycie modułu Interface Builder do utworzenia konwertera temperatur (247)
- Utworzenie nowego projektu (247)
- Dodanie plików (247)
- Interface Builder (248)
- Dodanie etykiet i widoków (249)
- Włączenie zmiany orientacji (249)
- Test interfejsu (249)
- Dodanie outletów i akcji (249)
- Dodanie metody konwersji (251)
- Uaktualnienie rodzaju klawiatury (251)
- Połączenie interfejsu iPada (252)
- Ręczna budowa interfejsu aplikacji konwertera (253)
- Połączenie wszystkiego razem (255)
- Tworzenie, wczytywanie i używanie interfejsów hybrydowych (256)
- Utworzenie nowego pliku .xib przeznaczonego na interfejs użytkownika (256)
- Dodanie widoku i wypełnienie go treścią (257)
- Nadanie wartości tag widokom (257)
- Edycja kodu (257)
- Projektowanie w celu zapewnienia obrotu interfejsu (258)
- Włączenie zmiany układu (258)
- Automatyczna zmiana wielkości (261)
- Przykład automatycznej zmiany wielkości (262)
- Omówienie opcji automatycznej zmiany wielkości (264)
- Przenoszenie widoków (264)
- Sposób: przenoszenie widoków poprzez naśladowanie szablonów (265)
- I jeszcze jedno: kilka doskonałych podpowiedzi dotyczących modułu Interface Builder (268)
- Podsumowanie (270)
5. Praca z kontrolerem widoku (271)
- Praca z kontrolerem nawigacyjnym i widokiem podzielonym (271)
- Używanie stosów i kontrolerów nawigacyjnych (273)
- Umieszczanie i usuwanie kontrolera ze stosu (273)
- Klasa elementu nawigacyjnego (274)
- Kontroler modalny (275)
- Sposób: budowa prostego menu składającego się z dwóch elementów (275)
- Sposób: dodanie kontrolki segmentowanej (277)
- Sposób: nawigacja pomiędzy kontrolerami widoków (279)
- Sposób: wyświetlenie własnego widoku modalnego zawierającego informacje (281)
- Sposób: kontroler widoku strony (285)
- Właściwości książki (285)
- Opakowanie implementacji (286)
- Omówienie kodu sposobu (290)
- Sposób: przewijanie stron w kontrolerze widoku strony (291)
- Sposób: pasek kart (292)
- Sposób: zapamiętanie stanu paska kart (295)
- Sposób: utworzenie kontrolera widoku podzielonego (298)
- Sposób: utworzenie aplikacji uniwersalnej używającej widoku podzielonego (302)
- Sposób: własny pojemnik i przejście segue (304)
- Przejścia pomiędzy kontrolerami widoków (308)
- I jeszcze jedno: moduł Interface Builder i kontroler paska kart (309)
- Podsumowanie (310)
6. Tworzenie widoków i animacji (313)
- Hierarchia widoku (313)
- Sposób: odkrywanie drzewa hierarchii widoku (315)
- Sposób: wykonywanie zapytań do podwidoków (315)
- Zarządzanie podwidokami (317)
- Dodanie podwidoku (317)
- Zmiana kolejności i usuwanie podwidoków (318)
- Wywołania zwrotne widoku (318)
- Sposób: oznaczanie widoków wartościami tag oraz pobieranie widoków (319)
- Używanie wartości tag do wyszukiwania widoków (319)
- Sposób: nadawanie nazw widokom (321)
- Obiekty powiązane (321)
- Użycie słownika nazw (323)
- Geometria widoku (326)
- Ramka (326)
- Przekształcenia (327)
- Systemy współrzędnych (328)
- Sposób: praca z ramką widoku (328)
- Dostosowanie wielkości (329)
- Struktura CGRect i punkt środkowy (330)
- Inne metody narzędziowe (331)
- Sposób: losowe przeniesienie widoku (334)
- Sposób: przekształcenie widoku (336)
- Wyświetlacz i cechy interakcji (337)
- Animacje obiektu UIView (338)
- Transakcyjne tworzenie animacji UIView (338)
- Tworzenie animacji za pomocą bloku (340)
- Animacja warunkowa (340)
- Sposób: pojawianie się i znikanie widoku (341)
- Sposób: zamiana widoków (342)
- Sposób: obrót widoku (343)
- Sposób: używanie przejść Core Animation (343)
- Sposób: efekt odbicia pojawiającego się widoku (345)
- Sposób: animacja widoku obrazu (346)
- I jeszcze jedno: dodanie odbicia do widoku (347)
- Podsumowanie (349)
7. Praca z obrazami (351)
- Wyszukiwanie i wczytywanie obrazów (351)
- Odczyt danych obrazu (353)
- Sposób: uzyskanie dostępu do zdjęć z albumu zdjęć (356)
- Praca z klasą UIImagePickerController (358)
- Pobranie informacji z edycji obrazu (360)
- Sposób: pobieranie obrazu z adresu URL zasobu (360)
- Sposób: pstrykanie zdjęć i ich zapis w albumie zdjęć (362)
- Wybór pomiędzy aparatami (365)
- Zapis obrazów w katalogu Documents (366)
- Sposób: wysyłanie obrazów za pomocą wiadomości e-mail (367)
- Utworzenie treści wiadomości (368)
- Wyświetlenie kontrolera tworzenia wiadomości (369)
- Automatyzacja wykonywania zdjęć (370)
- Używanie własnych nakładek na podglądzie aparatu (370)
- Sposób: uzyskanie dostępu do aparatu z poziomu AVFoundation (371)
- Aparat jest wymagany (372)
- Sprawdzanie dostępności i rodzaju aparatu (372)
- Utworzenie sesji aparatu (373)
- Przełączanie pomiędzy aparatami (375)
- Podgląd dostarczany przez aparat (375)
- Ułożenie podglądu z aparatu (376)
- EXIF (376)
- Geometria obrazu (377)
- Tworzenie klasy pomocniczej do obsługi aparatu (379)
- Sposób: dodanie filtru Core Image (379)
- Sposób: wykrywanie twarzy za pomocą Core Image (381)
- Wyodrębnianie twarzy (386)
- Sposób: praca z obrazami rastrowymi (387)
- Rysowanie w kontekście rastrowym (388)
- Przetwarzanie obrazu (390)
- Rzeczywistość dotycząca przetwarzania obrazów (391)
- Sposób: pobieranie próbek na żywo (392)
- Konwersja na HSB (394)
- Sposób: utworzenie miniatur z obrazów (395)
- Wykonywanie zrzutu ekranu widoku (397)
- Rysowanie w plikach PDF (398)
- Tworzenie nowego obrazu zupełnie od początku (399)
- Sposób: wyświetlenie obrazu w przewijanym widoku (400)
- Tworzenie przewijanej strony zawierającej wiele obrazów (402)
- Podsumowanie (402)
8. Gesty i dotknięcia (405)
- Dotknięcia (405)
- Fazy (406)
- Dotknięcia i metody ich obsługi (407)
- Dotykane widoki (407)
- Obsługa wielu dotknięć (408)
- Procedury rozpoznawania gestów (408)
- Sposób: dodanie prostej możliwości bezpośredniej manipulacji interfejsem (409)
- Sposób: dodanie procedury rozpoznawania gestu przesunięcia (410)
- Sposób: jednoczesne używanie wielu procedur rozpoznawania gestów (412)
- Usuwanie konfliktów pomiędzy procedurami rozpoznawania gestów (414)
- Sposób: ograniczenie ruchu (415)
- Sposób: testowanie miejsca dotknięcia (417)
- Sposób: testowanie grafiki rastrowej (418)
- Sposób: zapewnienie trwałości podczas bezpośredniej manipulacji interfejsem (420)
- Przechowywanie informacji o stanie (421)
- Przywracanie informacji o stanie (422)
- Sposób: zapewnienie trwałości poprzez archiwizację (423)
- Sposób: dodanie obsługi opcji cofnij (425)
- Utworzenie menedżera opcji cofnij (425)
- Obsługa operacji cofnięcia dla widoku potomnego (426)
- Praca z paskiem nawigacyjnym (426)
- Rejestracja operacji cofnięcia (427)
- Dodanie obsługi operacji cofnięcia poprzez potrząśnięcie urządzeniem (429)
- Dodanie nazwy akcji dla operacji cofnięcia i powtórzenia (krok opcjonalny) (430)
- Zapewnienie obsługi edycji poprzez potrząśnięcie (430)
- Wymuszenie statusu First Responder (430)
- Sposób: rysowanie w miejscu dotknięcia ekranu (431)
- Sposób: płynne rysowanie (432)
- Sposób: wykrywanie okręgów (435)
- Utworzenie własnej procedury rozpoznawania gestów (439)
- Sposób: używanie wielu dotknięć (441)
- Przytrzymanie ścieżek dotknięć (443)
- I jeszcze jedno: przeciąganie z widoku przewijanego (444)
- Podsumowanie (448)
9. Tworzenie i używanie kontrolek (449)
- Klasa UIControl (449)
- Rodzaje kontrolek (449)
- Zdarzenia kontrolek (450)
- Przyciski (452)
- Dodawanie przycisków w module Interface Builder (453)
- Grafika (454)
- Łączenie przycisków z akcjami (455)
- Przyciski, które nie są przyciskami (455)
- Tworzenie własnych przycisków w Xcode (456)
- Tekst przycisku wyświetlany w wielu wierszach (458)
- Umieszczenie w przycisku animowanych elementów (459)
- Sposób: animacja reakcji przycisku (459)
- Sposób: dodanie suwaka wraz z własną gałką (461)
- Dostosowanie egzemplarza UISlider do własnych potrzeb (461)
- Poprawa skuteczności (465)
- Proxy wyglądu (465)
- Sposób: tworzenie kontrolki segmentowanej umożliwiającej odpowiedź na drugie stuknięcie (466)
- Sposób: utworzenie podklasy klasy UIControl (468)
- Utworzenie egzemplarza UIControl (470)
- Śledzenie dotknięć (470)
- Przekazywanie zdarzeń (471)
- Praca z przełącznikami i stepperami (471)
- Sposób: utworzenie suwaka z gwiazdkami (472)
- Sposób: budowa tarczy dotykowej (476)
- Dodanie kontrolki wskaźnika strony (478)
- Sposób: utworzenie własnego rozwiązania przeznaczonego do przewijania stron (480)
- Utworzenie paska narzędziowego (484)
- Utworzenie paska narzędziowego w kodzie (485)
- Podpowiedzi dotyczące paska narzędziowego w iOS 5 (487)
- Podsumowanie (487)
10. Praca z tekstem (489)
- Sposób: ukrycie klawiatury po zakończeniu edycji tekstu w kontrolce UITextField (489)
- Właściwości dotyczące cech tekstu (491)
- Inne właściwości dotyczące pól tekstowych (492)
- Sposób: dostosowanie widoków wokół klawiatur (493)
- Sposób: przykrycie widoku tekstu własnym widokiem pomocniczym (495)
- Sposób: zmiana wielkości widoku po podłączeniu klawiatury sprzętowej (497)
- Sposób: utworzenie własnego widoku wprowadzania danych (500)
- Sposób: widoki potrafiące obsłużyć dane wejściowe w postaci tekstu (504)
- Sposób: dodanie własnego widoku danych wejściowych do widoku nietekstowego (507)
- Dodanie dźwięku kliknięcia (509)
- Sposób: zbudowanie lepszego edytora tekstów (509)
- Sposób: filtrowanie tekstu (511)
- Sposób: wykrywanie wzorców tekstu (513)
- Tworzenie własnych wyrażeń (514)
- Enumeracja wyrażenia regularnego (516)
- Wykrywanie danych (516)
- Dodanie wbudowanego detektora danych (517)
- Sposób: wykrywanie błędów w UITextView (517)
- Wyszukiwanie ciągów tekstowych (518)
- Sposób: wyświetlenie dostępnych czcionek (519)
- Sposób: dodanie własnych czcionek do aplikacji (520)
- Sposób: podstawy pracy z Core Text i ciągami tekstowymi z atrybutami (521)
- Użycie pseudo-HTML do utworzenia tekstu z atrybutami (526)
- Sposób: podział na strony w Core Text (531)
- Sposób: generowanie tekstu do dokumentu PDF (532)
- Sposób: wyświetlanie tekstu w nieregularnych kształtach (533)
- Sposób: wyświetlanie tekstu na ścieżce (536)
- Wyświetlanie tekstu na ścieżkach Béziera (541)
- Wyświetlanie proporcjonalne (541)
- Wyświetlanie liter (542)
- I jeszcze jedno: duży tekst na ekranie iPhone'a (543)
- Podsumowanie (546)
11. Tworzenie widoków tabel i zarządzanie nimi (547)
- Wprowadzenie do klas UITableView i UITableViewController (547)
- Utworzenie tabeli (548)
- Sposób: implementacja prostej tabeli (550)
- Wypełnienie tabeli (550)
- Metody źródła danych (551)
- Ponowne użycie komórek (552)
- Udzielanie odpowiedzi na działania użytkownika (552)
- Kolor zaznaczonej komórki (552)
- Zmiana koloru tła tabeli (553)
- Typy komórek (553)
- Sposób: utworzenie własnej komórki w module Interface Builder (554)
- Dodanie własnych atrybutów zaznaczonej komórki (556)
- Zdefiniowanie naprzemiennych kolorów komórek (556)
- Usunięcie efektu zaznaczenia komórki (557)
- Tworzenie tabel zgrupowanych (557)
- Sposób: zapamiętanie stanu kontrolki we własnej komórce (558)
- Wizualizacja ponownego wykorzystania komórki (560)
- Utworzenie "wybranej" komórki tabeli (561)
- Praca z przyciskiem typu disclosure (562)
- Sposób: edycja tabeli (564)
- Wyświetlanie kontrolek usuwania komórek (567)
- Usunięcie z ekranu kontrolek usuwania komórek (567)
- Obsługa żądań usunięcia komórek (567)
- Obsługa funkcji cofnięcia operacji (567)
- Gest machnięcia w komórce (568)
- Dodawanie komórek (568)
- Zmiana kolejności komórek (568)
- Algorytmiczne sortowanie tabeli (569)
- Sposób: praca z sekcjami (570)
- Tworzenie sekcji (571)
- Zliczanie sekcji i rekordów (572)
- Zwrot komórek (572)
- Utworzenie nagłówka sekcji (573)
- Utworzenie indeksu sekcji (573)
- Mechanizm delegacji w sekcjach (574)
- Sposób: wyszukiwanie w tabeli (575)
- Utworzenie kontrolera opcji wyszukiwania (575)
- Utworzenie metod źródła danych (576)
- Metody delegata (578)
- Używanie indeksu wyszukiwania (578)
- Dostosowanie nagłówka i stopki do własnych potrzeb (579)
- Sposób: dodanie do tabeli opcji "pociągnij, aby odświeżyć" (581)
- Utworzenie w kodzie własnej tabeli zgrupowanej (583)
- Utworzenie zgrupowanej tabeli ustawień (583)
- Sposób: utworzenie tabeli zawierającej wiele tarcz (585)
- Utworzenie egzemplarza UIPickerView (586)
- Sposób: użycie kontrolki UIPickerView z widokami (588)
- Sposób: użycie egzemplarza UIDatePicker (590)
- Utworzenie egzemplarza UIDatePicker (592)
- I jeszcze jedno: formatowanie daty (592)
- Podsumowanie (595)
12. Rozpoczęcie pracy z Core Data (597)
- Wprowadzenie do Core Data (597)
- Utworzenie i edycja plików modelu (598)
- Generowanie plików klasy (600)
- Utworzenie kontekstu Core Data (600)
- Dodawanie obiektów (601)
- Wykonywanie zapytań do bazy danych (603)
- Wykrywanie zmian (604)
- Usuwanie obiektów (604)
- Sposób: użycie Core Data jako źródła danych tabeli (605)
- Sposób: wyszukiwanie w tabeli a Core Data (608)
- Sposób: edycja danych na żywo w widoku tabeli Core Data (610)
- Sposób: implementacja funkcji cofnij i przywróć w Core Data (612)
- Podsumowanie (615)
13. Komunikaty ostrzeżeń wyświetlane użytkownikowi (617)
- Bezpośrednia komunikacja z użytkownikiem poprzez komunikaty (617)
- Utworzenie prostego komunikatu (617)
- Delegat komunikatu (618)
- Wyświetlenie komunikatu (620)
- Rodzaje komunikatów (620)
- "Proszę czekać" - wyświetlenie użytkownikowi paska postępu (621)
- Używanie klasy UIActivityIndicatorView (621)
- Używanie klasy UIProgressView (622)
- Sposób: komunikat bez przycisków (623)
- Utworzenie pływającego wskaźnika postępu (625)
- Sposób: utworzenie komunikatu modalnego w pętli działania (625)
- Sposób: użycie metody o zmiennej liczbie argumentów do utworzenia komunikatu (628)
- Wyświetlenie prostego menu (629)
- Przewijanie menu (631)
- Wyświetlanie tekstu w egzemplarzu UIActionSheet (631)
- Sposób: utworzenie własnego widoku komunikatu (631)
- Widok, który można nacisnąć (633)
- Sposób: proste okno typu Popover (633)
- Sposób: powiadomienia lokalne (635)
- Wskaźniki komunikatów (636)
- Używanie plakietek w aplikacji (636)
- Sposób: proste komunikaty audio (636)
- Dźwięki systemowe (637)
- Wibracja (638)
- Komunikaty (638)
- Opóźnienia (639)
- I jeszcze jedno: wyświetlenie komunikatu i umożliwienie dostosowania poziomu głośności (640)
- Podsumowanie (641)
14. Możliwości urządzenia (643)
- Uzyskanie dostępu do informacji podstawowych (643)
- Dodanie ograniczeń związanych z możliwościami urządzeń (644)
- Sposób: pobieranie informacji dodatkowych o urządzeniu (646)
- Monitorowanie poziomu naładowania baterii w iPhonie (647)
- Włączanie i wyłączanie czujnika zbliżeniowego (648)
- Sposób: użycie przyśpieszeniomierza w celu ustalenia "góry" urządzenia (649)
- Synchroniczne pobieranie bieżącego kąta przyśpieszeniomierza (651)
- Obliczanie kąta względnego (652)
- Praca z podstawową orientacją (652)
- Sposób: użycie przyśpieszeniomierza do poruszania obiektami po ekranie (653)
- Dodanie nieco blasku (656)
- Sposób: podstawy Core Motion (656)
- Sprawdzanie dostępności czujników (657)
- Obsługa bloku (657)
- Sposób: pobieranie i używanie informacji o położeniu urządzenia (660)
- Użycie zdarzeń ruchu do wykrycia wstrząśnięcia urządzeniem (661)
- Sposób: użycie przyśpieszeniomierza do wykrycia gestu wstrząśnięcia (663)
- Sposób: używanie ekranów zewnętrznych (666)
- Wykrywanie ekranu (667)
- Pobieranie informacji o rozdzielczości ekranu (667)
- Konfiguracja wyjścia wideo (667)
- Dodanie obiektu DisplayLink (668)
- Kompensacja overscanningu (668)
- VIDEOkit (668)
- I jeszcze jedno: sprawdzenie dostępnej ilości wolnego miejsca na dysku (671)
- Podsumowanie (672)
15. Sieć (675)
- Sprawdzenie stanu połączenia z siecią (675)
- Sposób: rozbudowa klasy UIDevice o możliwości w zakresie sprawdzania dostępności (677)
- Skanowanie w poszukiwaniu zmian w połączeniu (679)
- Pobieranie IP i informacji o komputerze (681)
- Używanie kolejek, aby nie blokować aplikacji (684)
- Sprawdzanie dostępności witryny (685)
- Pobieranie synchroniczne (687)
- Pobieranie asynchroniczne w teorii (690)
- Sposób: pobieranie asynchroniczne (691)
- Obsługa wyzwań związanych z uwierzytelnieniem (697)
- Przechowywanie danych uwierzytelniających (697)
- Sposób: przechowywanie i pobieranie danych uwierzytelniających z pęku kluczy (700)
- Sposób: przekazywanie danych do serwera (703)
- NSOperationQueue (706)
- Twitter (706)
- Sposób: konwersja XML na postać drzewa (707)
- Drzewa (707)
- Utworzenie drzewa przetwarzania (707)
- Użycie drzewa wyników (709)
- Sposób: utworzenie prostego serwera opartego na sieci (711)
- I jeszcze jedno: użycie serializacji JSON (714)
- Podsumowanie (715)
Skorowidz (717)
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-246-6968-4 |
Rozmiar pliku: | 18 MB |