Programowanie dla iphone Storyboarding i własne elementy interfejsu użytkownika

Podobne dokumenty
Programowanie dla iphone projektowanie interfejsu użytkownika

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

Temat 4. Storyboard i element interfejsu użytkownika Gra w kulki- część 1

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Dźwięk w IOS. Wykład 8. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.

Frameworki IOS. Wykład 14. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.

Przechowywanie danych w IOS

Temat 3. Projektowanie interfejsu użytkonwnika Kalkulator pierwszy program dla IOS

Programowanie obiektowe

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Programowanie dla ios

Politechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios

Programowanie dla ios

Temat 1. Podstawy Środowiska Xcode i wprowadzenie do języka Objective-C

Rozpoznawanie dotyku

Dzięki szkoleniu. Dni: 3. Opis: Adresaci szkolenia

Programowanie urządzeń mobilnych Apple Materiały dydaktyczne. Michał Dudkiewicz Błażej Zyglarski

Programowanie dla ios

Architektura interfejsu użytkownika

Diagramy klas. dr Jarosław Skaruz

cocos2d & Chipmunk Tworzenie gier 2D pod ios Konrad Kołakowski, Playsoft

Klasy abstrakcyjne, interfejsy i polimorfizm

Zdarzenia Klasa Application Powiadomienia Toast AlertDialog

Wzorce projektowe cz. II. Wzorce projektowe cz. II 1/35

Laboratorium programowania urządzeń mobilnych

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

Programowanie zaawansowane

Temat 13. Czujniki Dlaczego Twój Smartfon jest taki smart?

OBC01/TOPMOB Projektowanie w języku Objective-C

Dodanie nowej formy do projektu polega na:

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Programowanie aplikacji na urządzenia mobilne

Programowanie dla ios

Dokumentacja do API Javy.

Programowanie obiektowe

PARADYGMATY PROGRAMOWANIA Wykład 4

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Wprowadzenie do programowania aplikacji mobilnych

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Omówienie wzorców wykorzystywanych w Prism 5.0. Dominika Różycka

Visual Studio instalacja

2018/10/16 20:47 1/5 3 Ekrany

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Program jest ciągle uaktualniany tak, aby zawsze uwzględnić najnowszą wersję ios SDK.

Modele danych walidacja widoki zorientowane na model

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015

Widoki zagnieżdżone, layout. 1. Wprowadzenie Repozytoria danych

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku.

Aplikacje w środowisku Java

Szkolenie. IBM Lotus - Podstawy projektowania aplikacji w Domino Designer 8.5. Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017

PHP 5 język obiektowy

Fragmenty są wspierane od Androida 1.6

SWIFT. Zaawansowane Programowanie Obiektowe

Klasy abstrakcyjne i interfejsy

Programowanie obiektowe

Wywoływanie metod zdalnych

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

Programowanie w Javie

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Logger. Następnie w klasie Bootstrapper muimy zarejestrować nasz nowy logger:

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 12

Compas 2026 Vision Instrukcja obsługi do wersji 1.07

INSTRUKCJA UŻYTKOWNIKA

6.4. Efekty specjalne

Część I Rozpoczęcie pracy z usługami Reporting Services

MVVM Light Toolkit. Julita Borkowska

Sieciowe Technologie Mobilne. Laboratorium 2

Programowanie w języku Swift : Big Nerd Ranch guide / Matthew Mathias, John Gallagher. Gliwice, cop Spis treści

Kompleksowe tworzenie aplikacji klasy Desktop z wykorzystaniem SWT i

Tworzenie i wykorzystanie usług sieciowych

Jak dodać własny szablon ramki w programie dibudka i dilustro

Zacznij Tu! Poznaj Microsoft Visual Basic. Michael Halvorson. Przekład: Joanna Zatorska

SpriteKit. Biblioteka do tworzenia gier wbudowana w SDK. Wspiera grafikę 2D w oparciu o sprite y

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Tekst na mapach. Teksty na mapie. Ustawienia mapy. W tej instrukcji zostanie opisany sposób w jaki można na mapach wyświetlać teksty

Programowanie obiektowe

Builder (budowniczy) Cel: Przykład:

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Programowanie Obiektowe i C++

Kier. MTR Programowanie w MATLABie Laboratorium

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Przewodnik Szybki start

Tworzenie prezentacji w MS PowerPoint

Opis implementacji: Implementacja przedstawia Grę w życie jako przykład prostej symulacji opartej na automatach.

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Tworzenie zaawansowanych aplikacji w środowisku ios. Wykład 2 Objective-C. Tomasz Idzi

Wprowadzenie do programowanie obiektowego w języku C++

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Profesjonalni i skuteczni - projekt dla pracowników branży telekomunikacyjnej

ECDL/ICDL CAD 2D Moduł S8 Sylabus - wersja 1.5

Transkrypt:

#import "Fraction.h" #import <stdio.h> @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator: d]; } return self; -(void) print { printf( "%i/%i", numerator, denominator ); } -(void) setnumerator: (int) n { numerator = n; } -(void) setdenominator: (int) d { denominator = d; } -(void) setnumerator: (int) n anddenominator: (int) d { numerator = n; denominator = d; Programowanie dla iphone Storyboarding i własne elementy interfejsu użytkownika Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) Wykład 4

Storyboarding Nawigacja i ekrany aplikacji powinny być określone na początku Każdy widok powinien być samowystarczalny. Przejścia (segue) zdefiniowane pomiędzy kolejnymi widokami. 2

Storyboarding 3

Kolejne kroki tworzenia aplikacji 1) Tworzymy Sceny ViewControllers 2) Tworzymy Przejścia Segues (z identyfikatorami) 3) Programujemy wywołanie przejść. 4

Przejścia Przekazywanie danych między scenami. 5

Przesyłanie danych z powrotem Wykorzystanie delegata Host + delegat SourceViewController = delegat DestinationViewController = host 6

Delegat Delegat rejestruje się w hoście jako delegat. Jego metody będą odpowiednio wywołane. 7

Host Musi mieć właściwość (będącą delegatem) weak! 8

Protocol Delegat musi implementować protokół 9

Host Musi wywołać metodę delegata Na przykład w momencie zapisywania dodawanej książki. 10

Delegat Zamyka okna modalne 11

Kontrolki UI Navigation Bar Toolbar Tab Bar Image View Map View Table View Buttons Alerts 12

Kontrolki UI Text Field Search Bar Scope Bar Segmented Control RefreshControll Slider Stepper Switch 13

Przykładowa hierarchia klas dla obiektu UIButton Przykładowa ścieżka dziedziczenia elementów interfejsu użytkownika 14

UIView jako podstawa kontrolek Podstawa wszystkich kontrolek Cegiełki, z których buduje się kompletną scenę 15

Właściwości UIView Frame rozmiar i pozycja Bounds rozmiar Center pozycja w stosunku do nadwidoku Transform skalowanie, obrazcanie, 2d Alpha widoczność backgroundcolor kolor tłą contentstretch zmiana trybu, w jakim treść dopasowana jest do kontenera 16

Koordynaty UIView [0;0] górny lewy róg. Reprezentowane jako typ float Rozdzielczość dla programisty: Taka jak ekranu w przypadku zwykłych ekranów Dwukrotnie mniejsza niż w ekranach retina 17

Wymiary ekranów Urządzenie Punkty Piksele iphone<=3s 320x480 320x480 iphone4 / 4S 320x480 640x960 iphone 5 320x568 640x1136 ipad<=2 1024x768 1024x768 ipad mini 1024x768 1024x768 ipad>3 1024x768 2048x1536 ipodtouch 320x480 320x480 ipodtouchretina 320x480 640x960 Nowy ipodtouch 320x568 640x1136 18

UIView zarządzanie widokiem i podwidokami Widok może mieć >=0 podwidoków Każdy widok definiuje własne zasady skalowania i pozycjonowanie w zależności od widoku nadrzędnego Widok może modyfikować położenie i rozmiary swoich podwidoków 19

UIView zdarzenia akcji Widok jest narzędziem, które może obsługiwać zdarzenia dotyku zdefiniowane w klasie UIResponder Widok może używać obiektów typu GestureRecognizer do tego 20

Widoki Widoki mogą być zagnieżdżone Relacja rodzic dziecko Dziecko subview Rodzic superview Każdy rodzic może mieć dużo dzieci Dziecko ma jednego rodzica. 21

Geometria widoków Geometria widoków jest zdefiniowana przez Frame - położenie i rozmiar względem widoku rodzica Bounds zmiana wewnętrznych rozmiarów widoku To co jest poza zewnętrznym rozmiarem widoku może być przycięte albo nie. Center ustawienie pozycji bez zmiany rozmiaru 22

Tworzenie widoku Programistycznie Trzeba najpierw ustalić rozmiary (CGRect) CGRect viewrect = CGRectMake(10, 10, 100, 100); UIView* myview = [[UIView alloc] initwithframe:viewrect]; 23

Rysowanie widoku Rysowanie widoku odbywa się kiedy potrzeba Jeśli chcemy sami obsługiwać rysowanie, możemy zaimplementować metodę drawrect: 24

Tworzenie podklas UIView Kiedy sam widok nie zapewnia wszystkich potrzebnych funkcjonalności Może wystarczy rozszerzyć klasę? 25

Metody inicjalizacyjne podklasy UIView initwithframe: rekomendowana stworzenie widoku i uzupełnienie podstawowymi elementami initwithcoder: Zaimplementuj, jeśli pobierasz widok z interface builder layerclass - Implementuj w przypadku gdy używasz zaawansowanych narzędzi rysowania na przykład OpenGL 26

Metody rysowania podklasy UIView drawrect: - Jeśli chcemy rysować własne treści drawrect:forviewprintformatter: - Jeśli chcemy zmienić wygląd elementu podczas jego drukowania 27

Metody wyglądu podklasy UIView sizethatfits: - Jeśli chcesz zapobiec standardowym zmianom rozmiaru tego widoku layoutsubviews - Jeśli chcesz szczegółowo zarządzać ułożeniem podwidoków didaddsubview:, willremovesubview: - Żeby śledzić dodawanie i usuwanie podwidoków willmovetosuperview:, didmovetosuperview - Żeby śledzić ruchy widoku w jego hierarchii willmovetowindow:, didmovetowindow - Żeby śledzic ruchy widoku w innym oknie 28

Alternatywy dla podklas Wiele zachowań można osiągnąć ustawiając szczegółowe parametry widoku addconstraint autoresizingmask contentmode contentstretch backgroundcolor 29

Inicjalizowanie widoku initwithframe: Albo własna metoda inicjalizująca Ma zwracać typ (id) return self 30

UIView Runtime 31

Rady Nie każdy widok musi mieć własny ViewController Mininalizuj ilość samodzielnego rysowania Deklaruj widoki jako nieprzezroczyste zawsze gdy to możliwe 32

Gesture Recognizers Opakowują niskopoziomowe funkcje obsługi dotyku Pozwalają automatycznie wykryć typ dotyku Upraszczają procedurę 33

Uproszczenia Popularne gesty rozpoznane automatycznie. Odpowiednie obiekty służą do rozpoznawania konkretnych gestów Zmniejszają ilość potrzebnego kodu Zapewniają poprawność rozpoznania gestów 34

Wbudowane klasy GestureRecognizer Gesture Tapping (any number of taps) Pinching in and out (for zooming a view) Panning or dragging Swiping (in any direction) Rotating (fingers moving in opposite directions) Long press (also known as touch and hold ) UIKit class UITapGestureRecognizer UIPinchGestureRecognizer UIPanGestureRecognizer UISwipeGestureRecognizer UIRotationGestureRecognizer UILongPressGestureRecognize r 35

Zasady użycia Każdy jest związany z jednym widokiem Jeden widok może mieć wiele rozpoznawaczy Wiele różnych typów gestów Jeśli gesty mają być rozpoznawane, należy dołączyć obiekt gesture recognizer do widoku Gesture recognizer pierwszy (przed widokiem) otrzymuje informację o dotyku. 36

Gestures Trigger Action Messages Kiedy gesture recognizer rozpozna gest, przekazuje informację o tym do celu który ma określony Inicjalizacja obiektu gesturerecognizera wymaga określenia obsługiwanego celu. 37

Przykłady 38

Tworzenie obiektu GestureRecognizer Stworzenie instancji Przypisanie do celu Ustawienie konkretnych atrybutów Np. ilości potrzebnych uderzeń ekranu Przypisanie do widoku Zaimplementowanie akcji obsługi gestów 39

Przykład 40

Jak przebiega testowanie gestów 41

Jednoczesne rozpoznawanie gestów Domyślnie dwa rozpoznawacze nie mogą jednocześnie wykryć gestów Zdarzają się przypadki gdy to jest potrzebne (pinch & zoom) Zmiana domyślnego zachowania Implementacja metod UIGestureRecognizerDelegate gesturerecognizer:shouldrecognizesimultaneouslywithgesturer ecognizer: Metoda zwracająca YES pozwala na współpracę 42

Jednokierunkowa współpraca Implementacja 2 metod canpreventgesturerecognizer: canbepreventedbygesturerecognizer: Na przykład zabronienie wykrycia jednego gestu po wykryciu drugiego, ale umożliwienie wykrycia odwrotnej kolejności 43

Przykład 44

Własny GestureRecognizer Podklasa UIGestureRecognizer UIGestureRecognizerSubclass.h - (void)reset;- (void)touchesbegan:(nsset *)touches withevent:(uievent *)event; - (void)touchesmoved:(nsset *)touches withevent:(uievent *)event; - (void)touchesended:(nsset *)touches withevent:(uievent *)event; - (void)touchescancelled:(nsset *)touches withevent:(uievent *)event; 45

Porządek dotyku Dotyk jest w A > sprawdź B i C Dotyk jest w C > sprwdź D i E Dotyk jest w E wykonaj akcję 46

47

Multitouch Zdarza się, że chcemy reagować od razu na dowolny dotyk Rysowanie Szybka reakcja itp. Można samodzielnie obsługiwać dotyk Otrzymujemy informację o dotyku od razu po jego zaistnieniu 48

Interakcje z użytkownikiem userinteractionenabled: Metoda pozwalająca ustawić, czy dany widok ma interpretować, czy zignorować zdarzenia dotyku Implementacja metod pozwalających na pracę z dotykiem 49

Zdarzenie dotyku Faza: Began, - początek Moved, - poruszenie Ended, - zakończony Canceled. - anulowany W trakcie akcji dotyku odpowiednie metody dla tych faz są wykonywane 50

Praca z dotykiem widoku touchesbegan:withevent: touchesmoved:withevent: touchesended:withevent: touchescancelled:withevent: 51

Przykład podwójnego dotyku 52

Zakończenie KONIEC 53