SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
Разработка приложений
               для iPhone и iPad
                  занятие #4



вторник, 12 октября 2010 г.
feedback




вторник, 12 октября 2010 г.
домашнее задание?




вторник, 12 октября 2010 г.
результаты


                    • Шулюгин Владислав - 10
                    • Кабир Павел - 10


вторник, 12 октября 2010 г.
а что было?




вторник, 12 октября 2010 г.
события
                    • Срабатывают при действии пользователя
                    • Посылает action у target
                              target: myObject
  Пример:                     action: @selector(decrease:)
                              event: UIControlEventTouchUpInside


                   [myControl addTarget:myObject action:@selector(decrease:)
                   forControlEvents: UIControlEventTouchUpInside];


                   [myControl removeTarget:myObject action:@selector(decrease:)
                   forControlEvents: UIControlEventTouchUpInside];




вторник, 12 октября 2010 г.
view
                    • прямоугольная часть экрана
                    • показывает и принимает события
                    • view существуют в иерархии: один
                              superview, много subview
                    • все view показаны в window
                    • UIWindow - одно на всё приложение
вторник, 12 октября 2010 г.
иерархия view
   Либо в IB, либо программно:
                   •      [superView addSubview:view];

                   •      [subView removeFromSuperview];

  Управление иерархией:
   -   (void)insertSubview:(UIView *)view atIndex:(int)index;
   -   (void)insertSubview:(UIView *)view belowSubview:(UIView *)view;
   -   (void)insertSubview:(UIView *)view aboveSubview:(UIView *)view;
   -   (void)exchangeSubviewAtIndex:(int)index withSubviewAtIndex:(int)otherIndex;




вторник, 12 октября 2010 г.
view

                 SuperView производит retain
                Контроль показа view
                              theView.hidden = YES;




вторник, 12 октября 2010 г.
структуры для view

           • CGPoint место в пространстве+ { x , y }
           • CGSize размеры { width , height }
           • CGRect место и размеры { origin , size }




вторник, 12 октября 2010 г.
Rects, Points and Sizes

                                                   CGRect                                    (0, 0)              x

                                                                                                            54
                                           origin                            CGPoint

                                                                         x         80                 80
                                            size
                                                                     y             54
                                                                                              y



                                                                                                      144
                                                                CGSize

                                                            width    144
                                                                                        72
                                                            height   72



                              Tuesday, January 19, 2010                                                              11




вторник, 12 октября 2010 г.
View-related Structure
                работа со структурами
                         Creation Function           Example

                                                     CGPoint point = CGPointMake (100.0, 200.0);
                         CGPointMake (x, y)          point.x = 300.0;
                                                     point.y = 30.0;

                                                    CGSize size = CGSizeMake (42.0, 11.0);
                         CGSizeMake (width, height) size.width = 100.0;
                                                    size.height = 72.0;

                                                    CGRect rect = CGRectMake (100.0, 200.0,
                         CGRectMake (x, y,                                    42.0, 11.0);
                                     width, height) rect.origin.x = 0.0;
                                                    rect.size.width = 50.0;



                                                 синтаксис!
                  Tuesday, January 19, 2010       (), нет *                                        12


                                              наследство от С
вторник, 12 октября 2010 г.
ordinate System
left corner
wnwards
                               система координат
                                 0, 0
                                              +x




                                  +y

 вторник, 12 октября 2010 г.
view
                              frame           bounds

       координатная система                   локальная
            superview                    координатная система


            используется при              используется при
           использовании view             реализации view


вторник, 12 октября 2010 г.
создаём view
         CGRect frame = CGRectMake(20, 45, 140, 21);
         UILabel *label = [[UILabel alloc] initWithFrame:frame];
         [window addSubview:label];
         [label setText:@”Привет всем!”];
         [label release];




вторник, 12 октября 2010 г.
дополнительные бонусы
       UIColor
       UIColor *redColor = [UIColor redColor];
       [myLabel textColor] = redColor;




       UIFont
       UIFont *font = [UIFont systemFontOfSize:14.0];
       [myLabel setFont:font];




вторник, 12 октября 2010 г.
UIImage и UIImageView
         Создание UIImage:
        из ресурсов:
        +[UIImage imageNamed:(NSString *)name]

        с диска
        -[UIImage initWithContentsOfFile:(NSString *)path]

        из памяти в виде данных
         -[UIImage initWithData:(NSData *)data]


UIImage *myImage = [UIImage imageNamed:@’‘oleg.jpg’’];
CGRect frame = CGRectMake(20, 45, 140, 21);
UIImageView *myImageView = [[UIImageView alloc] initWithFrame:frame];
myImageView.image = myImage;
[myImage release];


вторник, 12 октября 2010 г.
простая анимация
      -(IBAction)changeValue {
      	

 [UIView beginAnimations:@"advancedAnimations" context:nil];
      	

 [UIView setAnimationDuration:0.5];
      	

      	

 int value = slider.value;
      	

 [label setText:[NSString stringWithFormat:@"%d",value]];
      	

      	

 CGRect fr = label.frame;
      	

 fr.origin.y += 40;
      	

 label.frame = fr;
      	

 [UIView commitAnimations];
      }




вторник, 12 октября 2010 г.
посмотрим?




вторник, 12 октября 2010 г.
дизайн приложений в
                        Two Flavors of Mail
                           iPhone




вторник, 12 октября 2010 г.
сравни
                      Organizing Content             Organizing Content




              Friday, January 22, 2010       Friday, January 22, 2010   6



вторник, 12 октября 2010 г.
дизайн
                                                      Organizing Content
                                                                         • Focus on yo

                    • фокус на                                           • One thing a
                                                                         • Screenfuls o
                              информацию
                              пользователя
                    • один функционал
                              единовременно



                                              Friday, January 22, 2010


вторник, 12 октября 2010 г.
функционал для
                                    управления
                              Patterns for Organizing Content
                                Navigation Bar     Tab Bar




вторник, 12 октября 2010 г.
MVC
                                      Parts of a Screenful




                              Model                          View




                                            Controller




      Friday, January 22, 2010                                      12

вторник, 12 октября 2010 г.
MVCParts adress book
                                  в of a Screenful

                                            Model                View




                                                    Controller




                     Friday, January 22, 2010                           11




вторник, 12 октября 2010 г.
а зачем
                           MVC?



вторник, 12 октября 2010 г.
вторник, 12 октября 2010 г.
Why Model-View-Controller?
                                      • Ever used the word “spaghetti” to describe code?
                                      • Clear responsibilities make things easier to maint
                                      • Avoid having one monster class that does everyth




                              Friday, January 22, 2010




вторник, 12 октября 2010 г.
Взаимодейтсвие в
                                    MVC
                    • Model не знает про View и Controller,
                              использует notification broadcast
                    • View не знает про Model и Controller,
                              использует terget-action и делегацию
                    • Controller знает всех, «мозги» -
                              управление, очень специфичный



вторник, 12 октября 2010 г.
View Controller
                      • Управляет содержимым экрана
                      • Наследуй от UIViewController, чтобы
                                определить свою логику
                              “Your” and “Our” View Controllers
Your” and “Our” View Controllers
                      • Несколько ViewController-ов могут
                                               • Create your
Create your own UIViewController subclass for each screenful own UIViewController subclass for each s
                                совмещаться    • Plug them together using existing composite view co
 lug them together using existing composite view controllers


                                                                                 View Controller
                                      View Controller
                      Navigation                                 Tab Bar
                                        View Controller                          View Controller
                      Controller                                Controller
                                          View Controller
                                                                                 View Controller


  вторник, 12 октября 2010 г.
свой ViewController
       #import <UIKit/UIKit.h>
       @interface MyViewController : UIViewController {
       NSMutableArray *myData;
                              Creating Your View in Code
       UILabel *myLabel;
                      • Override -loadView
       }                 ■        Never call this directly
                      • Create your views
       @property (readonly) NSArray *myData;
       - (void)doSomeAction:(id)sender;
                      • Set the view property
                              • Create view controller with -init

                               // Subclass of UIViewController
                               - (void)loadView
                               {view объявлен в UIViewController
                                 MyView *myView = [[MyView alloc] initWithFrame:frame];
                                 self.view = myView; // The view controller now owns the view
                                 [myView release];
                               }
                                   в нашей реализации - loadView
вторник, 12 октября 2010 г.
свой ViewController
           - (void)loadView {
           MyView *myView = [[MyView alloc] initWithFrame:frame];
           self.view = myView;
           [myView release];
           }




вторник, 12 октября 2010 г.
свой ViewController Builder
                              Creating Your View with Interface
                                              • Lay out a view in Interface Builder
                                              • File’s owner is view controller class
                                              • Hook up view outlet

                    • File - New File - View Controller
                                              • Create view controller
                                                 with -initWithNibName:bundle:


                    • автоматическое создание nib-файла
                    • создание нового объекта viewController
                              при помощи -initWithNibName:bundle:

                                      Friday, January 22, 2010




вторник, 12 октября 2010 г.
http://empatika.com
      oleg.parinov@empatika.com




вторник, 12 октября 2010 г.

Weitere ähnliche Inhalte

Andere mochten auch

Lviv MDDay 2014. Іван Дзямулич. “Розробка для iOS. Підводні камені та шляхи д...
Lviv MDDay 2014. Іван Дзямулич. “Розробка для iOS. Підводні камені та шляхи д...Lviv MDDay 2014. Іван Дзямулич. “Розробка для iOS. Підводні камені та шляхи д...
Lviv MDDay 2014. Іван Дзямулич. “Розробка для iOS. Підводні камені та шляхи д...Lviv Startup Club
 
Android проти iOS презентація учня
Android проти iOS презентація учняAndroid проти iOS презентація учня
Android проти iOS презентація учняmarinabaldovska
 
Cocoa Design Patterns in Swift
Cocoa Design Patterns in SwiftCocoa Design Patterns in Swift
Cocoa Design Patterns in SwiftMichele Titolo
 
Генетические алгоритмы
Генетические алгоритмыГенетические алгоритмы
Генетические алгоритмыOleg Parinov
 
'Real agile' coaching session
'Real agile'   coaching session'Real agile'   coaching session
'Real agile' coaching sessionOleg Parinov
 
Beginning iPhone Development
Beginning iPhone DevelopmentBeginning iPhone Development
Beginning iPhone Developmentsgleadow
 
tvOS, The Focus Engine, and Swift
tvOS, The Focus Engine, and SwifttvOS, The Focus Engine, and Swift
tvOS, The Focus Engine, and SwiftEvan Maloney
 
Denis Lebedev, Swift
Denis  Lebedev, SwiftDenis  Lebedev, Swift
Denis Lebedev, SwiftYandex
 
iOS 10 - What you need to know
iOS 10 - What you need to knowiOS 10 - What you need to know
iOS 10 - What you need to knowThe App Business
 
Как не выстрелить себе в ногу из конечного автомата / Александр Сычев (RAMBL...
Как не выстрелить себе в ногу из конечного автомата /  Александр Сычев (RAMBL...Как не выстрелить себе в ногу из конечного автомата /  Александр Сычев (RAMBL...
Как не выстрелить себе в ногу из конечного автомата / Александр Сычев (RAMBL...Ontico
 
A swift introduction to Swift
A swift introduction to SwiftA swift introduction to Swift
A swift introduction to SwiftGiordano Scalzo
 
iOS vs Android. Взгляд разработчика
iOS vs Android. Взгляд разработчикаiOS vs Android. Взгляд разработчика
iOS vs Android. Взгляд разработчикаSergey Kopov
 
To Swift 2...and Beyond!
To Swift 2...and Beyond!To Swift 2...and Beyond!
To Swift 2...and Beyond!Scott Gardner
 
SV-ios-objc-to-swift
SV-ios-objc-to-swiftSV-ios-objc-to-swift
SV-ios-objc-to-swiftRandy Scovil
 
Swift Programming Language
Swift Programming LanguageSwift Programming Language
Swift Programming LanguageGiuseppe Arici
 

Andere mochten auch (19)

Lviv MDDay 2014. Іван Дзямулич. “Розробка для iOS. Підводні камені та шляхи д...
Lviv MDDay 2014. Іван Дзямулич. “Розробка для iOS. Підводні камені та шляхи д...Lviv MDDay 2014. Іван Дзямулич. “Розробка для iOS. Підводні камені та шляхи д...
Lviv MDDay 2014. Іван Дзямулич. “Розробка для iOS. Підводні камені та шляхи д...
 
Android проти iOS презентація учня
Android проти iOS презентація учняAndroid проти iOS презентація учня
Android проти iOS презентація учня
 
iOS 9 Search
iOS 9 SearchiOS 9 Search
iOS 9 Search
 
Cocoa Design Patterns in Swift
Cocoa Design Patterns in SwiftCocoa Design Patterns in Swift
Cocoa Design Patterns in Swift
 
информатика. ос
информатика. осинформатика. ос
информатика. ос
 
Генетические алгоритмы
Генетические алгоритмыГенетические алгоритмы
Генетические алгоритмы
 
'Real agile' coaching session
'Real agile'   coaching session'Real agile'   coaching session
'Real agile' coaching session
 
Beginning iPhone Development
Beginning iPhone DevelopmentBeginning iPhone Development
Beginning iPhone Development
 
tvOS, The Focus Engine, and Swift
tvOS, The Focus Engine, and SwifttvOS, The Focus Engine, and Swift
tvOS, The Focus Engine, and Swift
 
Denis Lebedev, Swift
Denis  Lebedev, SwiftDenis  Lebedev, Swift
Denis Lebedev, Swift
 
iOS 10 - What you need to know
iOS 10 - What you need to knowiOS 10 - What you need to know
iOS 10 - What you need to know
 
Swift Introduction
Swift IntroductionSwift Introduction
Swift Introduction
 
Как не выстрелить себе в ногу из конечного автомата / Александр Сычев (RAMBL...
Как не выстрелить себе в ногу из конечного автомата /  Александр Сычев (RAMBL...Как не выстрелить себе в ногу из конечного автомата /  Александр Сычев (RAMBL...
Как не выстрелить себе в ногу из конечного автомата / Александр Сычев (RAMBL...
 
A swift introduction to Swift
A swift introduction to SwiftA swift introduction to Swift
A swift introduction to Swift
 
iOS vs Android. Взгляд разработчика
iOS vs Android. Взгляд разработчикаiOS vs Android. Взгляд разработчика
iOS vs Android. Взгляд разработчика
 
To Swift 2...and Beyond!
To Swift 2...and Beyond!To Swift 2...and Beyond!
To Swift 2...and Beyond!
 
Bringing swift to cloud
Bringing swift to cloudBringing swift to cloud
Bringing swift to cloud
 
SV-ios-objc-to-swift
SV-ios-objc-to-swiftSV-ios-objc-to-swift
SV-ios-objc-to-swift
 
Swift Programming Language
Swift Programming LanguageSwift Programming Language
Swift Programming Language
 

Ähnlich wie Четвертое занятие курса iOS-разработки в ГУ-ВШЭ

Разбираемся с CoordinatorLayout
Разбираемся с CoordinatorLayoutРазбираемся с CoordinatorLayout
Разбираемся с CoordinatorLayoutRambler Android
 
«Custom View. Делаем быстро, красиво, чисто». Илья Демидов
«Custom View. Делаем быстро, красиво, чисто». Илья Демидов«Custom View. Делаем быстро, красиво, чисто». Илья Демидов
«Custom View. Делаем быстро, красиво, чисто». Илья ДемидовDataArt
 
Интерактивные 3D-карты своими руками / Александр Амосов (Avito)
Интерактивные 3D-карты своими руками / Александр Амосов (Avito)Интерактивные 3D-карты своими руками / Александр Амосов (Avito)
Интерактивные 3D-карты своими руками / Александр Амосов (Avito)Ontico
 
"Погружение в Robolectric" Дмитрий Костырев (Avito)
"Погружение в Robolectric"  Дмитрий Костырев (Avito)"Погружение в Robolectric"  Дмитрий Костырев (Avito)
"Погружение в Robolectric" Дмитрий Костырев (Avito)AvitoTech
 
iOS-05_2-UIKit
iOS-05_2-UIKitiOS-05_2-UIKit
iOS-05_2-UIKitNoveo
 
Урок 3Ds Max - полустационар "Компьютерная графика и дизайн" в КА "ШАГ"
Урок 3Ds Max - полустационар "Компьютерная графика и дизайн" в КА "ШАГ"Урок 3Ds Max - полустационар "Компьютерная графика и дизайн" в КА "ШАГ"
Урок 3Ds Max - полустационар "Компьютерная графика и дизайн" в КА "ШАГ"STEP Computer Academy (Zaporozhye)
 
Дмитрий Захаров «Компоновка элементов пользовательского интерфейса»
Дмитрий Захаров «Компоновка элементов пользовательского интерфейса»Дмитрий Захаров «Компоновка элементов пользовательского интерфейса»
Дмитрий Захаров «Компоновка элементов пользовательского интерфейса»e-Legion
 
Moxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииMoxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииYuri Shmakov
 
Фундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел ТайкалоФундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел ТайкалоStanfy
 
Володимир Семенякін “Demiurg. Приручення заліза”
Володимир Семенякін “Demiurg. Приручення заліза”Володимир Семенякін “Demiurg. Приручення заліза”
Володимир Семенякін “Demiurg. Приручення заліза”Lviv Startup Club
 
Кастомная кнопка: взгляд изнутри
Кастомная кнопка: взгляд изнутриКастомная кнопка: взгляд изнутри
Кастомная кнопка: взгляд изнутриKirill Averyanov
 
Кирилл Аверьянов — Кастомная кнопка: взгляд изнутри
Кирилл Аверьянов —  Кастомная кнопка: взгляд изнутриКирилл Аверьянов —  Кастомная кнопка: взгляд изнутри
Кирилл Аверьянов — Кастомная кнопка: взгляд изнутриCocoaHeads
 
Быть в 10 раз эффективнее благодаря Groovy
Быть в 10 раз эффективнее благодаря GroovyБыть в 10 раз эффективнее благодаря Groovy
Быть в 10 раз эффективнее благодаря GroovyEvgeny Kompaniyets
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановYandex
 
Android Development Course in HSE lecture #3
Android Development Course in HSE lecture #3Android Development Course in HSE lecture #3
Android Development Course in HSE lecture #3Empatika
 
Cpp0x Introduction
Cpp0x IntroductionCpp0x Introduction
Cpp0x IntroductionFedor Vompe
 
MVP, Moxy. Как правильно пользоваться
MVP, Moxy. Как правильно пользоватьсяMVP, Moxy. Как правильно пользоваться
MVP, Moxy. Как правильно пользоватьсяYuri Shmakov
 
Rules - правила без исключений
Rules - правила без исключенийRules - правила без исключений
Rules - правила без исключенийzabej
 
Александр Зимин "Нестандартная верстка для стандартных компонентов в iOS"
Александр Зимин "Нестандартная верстка для стандартных компонентов в iOS"Александр Зимин "Нестандартная верстка для стандартных компонентов в iOS"
Александр Зимин "Нестандартная верстка для стандартных компонентов в iOS"IT Event
 
Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"
Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"
Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"Yandex
 

Ähnlich wie Четвертое занятие курса iOS-разработки в ГУ-ВШЭ (20)

Разбираемся с CoordinatorLayout
Разбираемся с CoordinatorLayoutРазбираемся с CoordinatorLayout
Разбираемся с CoordinatorLayout
 
«Custom View. Делаем быстро, красиво, чисто». Илья Демидов
«Custom View. Делаем быстро, красиво, чисто». Илья Демидов«Custom View. Делаем быстро, красиво, чисто». Илья Демидов
«Custom View. Делаем быстро, красиво, чисто». Илья Демидов
 
Интерактивные 3D-карты своими руками / Александр Амосов (Avito)
Интерактивные 3D-карты своими руками / Александр Амосов (Avito)Интерактивные 3D-карты своими руками / Александр Амосов (Avito)
Интерактивные 3D-карты своими руками / Александр Амосов (Avito)
 
"Погружение в Robolectric" Дмитрий Костырев (Avito)
"Погружение в Robolectric"  Дмитрий Костырев (Avito)"Погружение в Robolectric"  Дмитрий Костырев (Avito)
"Погружение в Robolectric" Дмитрий Костырев (Avito)
 
iOS-05_2-UIKit
iOS-05_2-UIKitiOS-05_2-UIKit
iOS-05_2-UIKit
 
Урок 3Ds Max - полустационар "Компьютерная графика и дизайн" в КА "ШАГ"
Урок 3Ds Max - полустационар "Компьютерная графика и дизайн" в КА "ШАГ"Урок 3Ds Max - полустационар "Компьютерная графика и дизайн" в КА "ШАГ"
Урок 3Ds Max - полустационар "Компьютерная графика и дизайн" в КА "ШАГ"
 
Дмитрий Захаров «Компоновка элементов пользовательского интерфейса»
Дмитрий Захаров «Компоновка элементов пользовательского интерфейса»Дмитрий Захаров «Компоновка элементов пользовательского интерфейса»
Дмитрий Захаров «Компоновка элементов пользовательского интерфейса»
 
Moxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииMoxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магии
 
Фундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел ТайкалоФундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел Тайкало
 
Володимир Семенякін “Demiurg. Приручення заліза”
Володимир Семенякін “Demiurg. Приручення заліза”Володимир Семенякін “Demiurg. Приручення заліза”
Володимир Семенякін “Demiurg. Приручення заліза”
 
Кастомная кнопка: взгляд изнутри
Кастомная кнопка: взгляд изнутриКастомная кнопка: взгляд изнутри
Кастомная кнопка: взгляд изнутри
 
Кирилл Аверьянов — Кастомная кнопка: взгляд изнутри
Кирилл Аверьянов —  Кастомная кнопка: взгляд изнутриКирилл Аверьянов —  Кастомная кнопка: взгляд изнутри
Кирилл Аверьянов — Кастомная кнопка: взгляд изнутри
 
Быть в 10 раз эффективнее благодаря Groovy
Быть в 10 раз эффективнее благодаря GroovyБыть в 10 раз эффективнее благодаря Groovy
Быть в 10 раз эффективнее благодаря Groovy
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий Леванов
 
Android Development Course in HSE lecture #3
Android Development Course in HSE lecture #3Android Development Course in HSE lecture #3
Android Development Course in HSE lecture #3
 
Cpp0x Introduction
Cpp0x IntroductionCpp0x Introduction
Cpp0x Introduction
 
MVP, Moxy. Как правильно пользоваться
MVP, Moxy. Как правильно пользоватьсяMVP, Moxy. Как правильно пользоваться
MVP, Moxy. Как правильно пользоваться
 
Rules - правила без исключений
Rules - правила без исключенийRules - правила без исключений
Rules - правила без исключений
 
Александр Зимин "Нестандартная верстка для стандартных компонентов в iOS"
Александр Зимин "Нестандартная верстка для стандартных компонентов в iOS"Александр Зимин "Нестандартная верстка для стандартных компонентов в iOS"
Александр Зимин "Нестандартная верстка для стандартных компонентов в iOS"
 
Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"
Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"
Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"
 

Mehr von Oleg Parinov

Oleg+olga product meetup
Oleg+olga product meetupOleg+olga product meetup
Oleg+olga product meetupOleg Parinov
 
[Технопарк] Управление продуктом-1
[Технопарк] Управление продуктом-1[Технопарк] Управление продуктом-1
[Технопарк] Управление продуктом-1Oleg Parinov
 
[Технопарк] Управление продуктом-2
[Технопарк] Управление продуктом-2[Технопарк] Управление продуктом-2
[Технопарк] Управление продуктом-2Oleg Parinov
 
[Технопарк] Управление продуктом-3
[Технопарк] Управление продуктом-3[Технопарк] Управление продуктом-3
[Технопарк] Управление продуктом-3Oleg Parinov
 
Управление продуктом - 5-я лекция - Технопарк@Mail.Ru
Управление продуктом - 5-я лекция - Технопарк@Mail.RuУправление продуктом - 5-я лекция - Технопарк@Mail.Ru
Управление продуктом - 5-я лекция - Технопарк@Mail.RuOleg Parinov
 
Управление продуктом - Лекция №4
Управление продуктом - Лекция №4Управление продуктом - Лекция №4
Управление продуктом - Лекция №4Oleg Parinov
 
Технопарк - Управление продуктом - Лекция №2
Технопарк - Управление продуктом - Лекция №2Технопарк - Управление продуктом - Лекция №2
Технопарк - Управление продуктом - Лекция №2Oleg Parinov
 
Лекция №2 Курса Product Management в НИУ-ВШЭ
Лекция №2 Курса Product Management в НИУ-ВШЭЛекция №2 Курса Product Management в НИУ-ВШЭ
Лекция №2 Курса Product Management в НИУ-ВШЭOleg Parinov
 
Product management - лекция №1
Product management - лекция №1Product management - лекция №1
Product management - лекция №1Oleg Parinov
 
Презентация проекта In Flow
Презентация проекта In FlowПрезентация проекта In Flow
Презентация проекта In FlowOleg Parinov
 
Pivot + Lean Startup #poSEEDelki Harvest
Pivot + Lean Startup #poSEEDelki HarvestPivot + Lean Startup #poSEEDelki Harvest
Pivot + Lean Startup #poSEEDelki HarvestOleg Parinov
 
Start-up Reality Check - Empatika в ВШЭ
Start-up Reality Check - Empatika в ВШЭStart-up Reality Check - Empatika в ВШЭ
Start-up Reality Check - Empatika в ВШЭOleg Parinov
 
2-е занятие курса iPhone разработки в ГУ-ВШЭ
2-е занятие курса iPhone разработки в ГУ-ВШЭ2-е занятие курса iPhone разработки в ГУ-ВШЭ
2-е занятие курса iPhone разработки в ГУ-ВШЭOleg Parinov
 

Mehr von Oleg Parinov (17)

Oleg+olga product meetup
Oleg+olga product meetupOleg+olga product meetup
Oleg+olga product meetup
 
[Технопарк] Управление продуктом-1
[Технопарк] Управление продуктом-1[Технопарк] Управление продуктом-1
[Технопарк] Управление продуктом-1
 
[Технопарк] Управление продуктом-2
[Технопарк] Управление продуктом-2[Технопарк] Управление продуктом-2
[Технопарк] Управление продуктом-2
 
[Технопарк] Управление продуктом-3
[Технопарк] Управление продуктом-3[Технопарк] Управление продуктом-3
[Технопарк] Управление продуктом-3
 
Управление продуктом - 5-я лекция - Технопарк@Mail.Ru
Управление продуктом - 5-я лекция - Технопарк@Mail.RuУправление продуктом - 5-я лекция - Технопарк@Mail.Ru
Управление продуктом - 5-я лекция - Технопарк@Mail.Ru
 
Управление продуктом - Лекция №4
Управление продуктом - Лекция №4Управление продуктом - Лекция №4
Управление продуктом - Лекция №4
 
Технопарк - Управление продуктом - Лекция №2
Технопарк - Управление продуктом - Лекция №2Технопарк - Управление продуктом - Лекция №2
Технопарк - Управление продуктом - Лекция №2
 
Лекция №2 Курса Product Management в НИУ-ВШЭ
Лекция №2 Курса Product Management в НИУ-ВШЭЛекция №2 Курса Product Management в НИУ-ВШЭ
Лекция №2 Курса Product Management в НИУ-ВШЭ
 
Product management - лекция №1
Product management - лекция №1Product management - лекция №1
Product management - лекция №1
 
Презентация проекта In Flow
Презентация проекта In FlowПрезентация проекта In Flow
Презентация проекта In Flow
 
Pivot + Lean Startup #poSEEDelki Harvest
Pivot + Lean Startup #poSEEDelki HarvestPivot + Lean Startup #poSEEDelki Harvest
Pivot + Lean Startup #poSEEDelki Harvest
 
Instagram Design
Instagram DesignInstagram Design
Instagram Design
 
Start-up Reality Check - Empatika в ВШЭ
Start-up Reality Check - Empatika в ВШЭStart-up Reality Check - Empatika в ВШЭ
Start-up Reality Check - Empatika в ВШЭ
 
занятие8
занятие8занятие8
занятие8
 
занятие7
занятие7занятие7
занятие7
 
занятие6
занятие6занятие6
занятие6
 
2-е занятие курса iPhone разработки в ГУ-ВШЭ
2-е занятие курса iPhone разработки в ГУ-ВШЭ2-е занятие курса iPhone разработки в ГУ-ВШЭ
2-е занятие курса iPhone разработки в ГУ-ВШЭ
 

Четвертое занятие курса iOS-разработки в ГУ-ВШЭ

  • 1. Разработка приложений для iPhone и iPad занятие #4 вторник, 12 октября 2010 г.
  • 4. результаты • Шулюгин Владислав - 10 • Кабир Павел - 10 вторник, 12 октября 2010 г.
  • 5. а что было? вторник, 12 октября 2010 г.
  • 6. события • Срабатывают при действии пользователя • Посылает action у target target: myObject Пример: action: @selector(decrease:) event: UIControlEventTouchUpInside [myControl addTarget:myObject action:@selector(decrease:) forControlEvents: UIControlEventTouchUpInside]; [myControl removeTarget:myObject action:@selector(decrease:) forControlEvents: UIControlEventTouchUpInside]; вторник, 12 октября 2010 г.
  • 7. view • прямоугольная часть экрана • показывает и принимает события • view существуют в иерархии: один superview, много subview • все view показаны в window • UIWindow - одно на всё приложение вторник, 12 октября 2010 г.
  • 8. иерархия view Либо в IB, либо программно: • [superView addSubview:view]; • [subView removeFromSuperview]; Управление иерархией: - (void)insertSubview:(UIView *)view atIndex:(int)index; - (void)insertSubview:(UIView *)view belowSubview:(UIView *)view; - (void)insertSubview:(UIView *)view aboveSubview:(UIView *)view; - (void)exchangeSubviewAtIndex:(int)index withSubviewAtIndex:(int)otherIndex; вторник, 12 октября 2010 г.
  • 9. view SuperView производит retain Контроль показа view theView.hidden = YES; вторник, 12 октября 2010 г.
  • 10. структуры для view • CGPoint место в пространстве+ { x , y } • CGSize размеры { width , height } • CGRect место и размеры { origin , size } вторник, 12 октября 2010 г.
  • 11. Rects, Points and Sizes CGRect (0, 0) x 54 origin CGPoint x 80 80 size y 54 y 144 CGSize width 144 72 height 72 Tuesday, January 19, 2010 11 вторник, 12 октября 2010 г.
  • 12. View-related Structure работа со структурами Creation Function Example CGPoint point = CGPointMake (100.0, 200.0); CGPointMake (x, y) point.x = 300.0; point.y = 30.0; CGSize size = CGSizeMake (42.0, 11.0); CGSizeMake (width, height) size.width = 100.0; size.height = 72.0; CGRect rect = CGRectMake (100.0, 200.0, CGRectMake (x, y, 42.0, 11.0); width, height) rect.origin.x = 0.0; rect.size.width = 50.0; синтаксис! Tuesday, January 19, 2010 (), нет * 12 наследство от С вторник, 12 октября 2010 г.
  • 13. ordinate System left corner wnwards система координат 0, 0 +x +y вторник, 12 октября 2010 г.
  • 14. view frame bounds координатная система локальная superview координатная система используется при используется при использовании view реализации view вторник, 12 октября 2010 г.
  • 15. создаём view CGRect frame = CGRectMake(20, 45, 140, 21); UILabel *label = [[UILabel alloc] initWithFrame:frame]; [window addSubview:label]; [label setText:@”Привет всем!”]; [label release]; вторник, 12 октября 2010 г.
  • 16. дополнительные бонусы UIColor UIColor *redColor = [UIColor redColor]; [myLabel textColor] = redColor; UIFont UIFont *font = [UIFont systemFontOfSize:14.0]; [myLabel setFont:font]; вторник, 12 октября 2010 г.
  • 17. UIImage и UIImageView Создание UIImage: из ресурсов: +[UIImage imageNamed:(NSString *)name] с диска -[UIImage initWithContentsOfFile:(NSString *)path] из памяти в виде данных -[UIImage initWithData:(NSData *)data] UIImage *myImage = [UIImage imageNamed:@’‘oleg.jpg’’]; CGRect frame = CGRectMake(20, 45, 140, 21); UIImageView *myImageView = [[UIImageView alloc] initWithFrame:frame]; myImageView.image = myImage; [myImage release]; вторник, 12 октября 2010 г.
  • 18. простая анимация -(IBAction)changeValue { [UIView beginAnimations:@"advancedAnimations" context:nil]; [UIView setAnimationDuration:0.5]; int value = slider.value; [label setText:[NSString stringWithFormat:@"%d",value]]; CGRect fr = label.frame; fr.origin.y += 40; label.frame = fr; [UIView commitAnimations]; } вторник, 12 октября 2010 г.
  • 20. дизайн приложений в Two Flavors of Mail iPhone вторник, 12 октября 2010 г.
  • 21. сравни Organizing Content Organizing Content Friday, January 22, 2010 Friday, January 22, 2010 6 вторник, 12 октября 2010 г.
  • 22. дизайн Organizing Content • Focus on yo • фокус на • One thing a • Screenfuls o информацию пользователя • один функционал единовременно Friday, January 22, 2010 вторник, 12 октября 2010 г.
  • 23. функционал для управления Patterns for Organizing Content Navigation Bar Tab Bar вторник, 12 октября 2010 г.
  • 24. MVC Parts of a Screenful Model View Controller Friday, January 22, 2010 12 вторник, 12 октября 2010 г.
  • 25. MVCParts adress book в of a Screenful Model View Controller Friday, January 22, 2010 11 вторник, 12 октября 2010 г.
  • 26. а зачем MVC? вторник, 12 октября 2010 г.
  • 28. Why Model-View-Controller? • Ever used the word “spaghetti” to describe code? • Clear responsibilities make things easier to maint • Avoid having one monster class that does everyth Friday, January 22, 2010 вторник, 12 октября 2010 г.
  • 29. Взаимодейтсвие в MVC • Model не знает про View и Controller, использует notification broadcast • View не знает про Model и Controller, использует terget-action и делегацию • Controller знает всех, «мозги» - управление, очень специфичный вторник, 12 октября 2010 г.
  • 30. View Controller • Управляет содержимым экрана • Наследуй от UIViewController, чтобы определить свою логику “Your” and “Our” View Controllers Your” and “Our” View Controllers • Несколько ViewController-ов могут • Create your Create your own UIViewController subclass for each screenful own UIViewController subclass for each s совмещаться • Plug them together using existing composite view co lug them together using existing composite view controllers View Controller View Controller Navigation Tab Bar View Controller View Controller Controller Controller View Controller View Controller вторник, 12 октября 2010 г.
  • 31. свой ViewController #import <UIKit/UIKit.h> @interface MyViewController : UIViewController { NSMutableArray *myData; Creating Your View in Code UILabel *myLabel; • Override -loadView } ■ Never call this directly • Create your views @property (readonly) NSArray *myData; - (void)doSomeAction:(id)sender; • Set the view property • Create view controller with -init // Subclass of UIViewController - (void)loadView {view объявлен в UIViewController MyView *myView = [[MyView alloc] initWithFrame:frame]; self.view = myView; // The view controller now owns the view [myView release]; } в нашей реализации - loadView вторник, 12 октября 2010 г.
  • 32. свой ViewController - (void)loadView { MyView *myView = [[MyView alloc] initWithFrame:frame]; self.view = myView; [myView release]; } вторник, 12 октября 2010 г.
  • 33. свой ViewController Builder Creating Your View with Interface • Lay out a view in Interface Builder • File’s owner is view controller class • Hook up view outlet • File - New File - View Controller • Create view controller with -initWithNibName:bundle: • автоматическое создание nib-файла • создание нового объекта viewController при помощи -initWithNibName:bundle: Friday, January 22, 2010 вторник, 12 октября 2010 г.
  • 34. http://empatika.com oleg.parinov@empatika.com вторник, 12 октября 2010 г.