Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
Поддержка iPad
Разработка приложений для iOS
Лекция 10
Глеб Тарасов
gleb34@gmail.com
Вспомним прошлое
занятие
Как анимированно передвинуть
view?
Как анимированно передвинуть
view?
[UIView animateWithDuration:0.3 animations:^{
self.smallView.frame = ...;
}];
Как последовательно запустить
две анимации?
Как последовательно запустить
две анимации?
[UIView animateWithDuration:0.3
animations:^{
// первая анимация
}
completion:...
Как сразу изменить свойства всех
view данного типа?	

(например всех UILabel)
Как сразу изменить свойства всех
view данного типа?	

(например всех UILabel)
id a = [UILabel appearance];
[a setTextColor...
Приложения для iPad
Универсальные
приложения
Способы организации
• все делаем из кода	

• одна Storyboard на оба устройства	

• раздельные Storyboard на оба устройства...
Проверка в коде
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
...
}
+ (BOOL)isIpad
{
return (UI_USER_INTERFA...
Установка Storyboard
- (void)viewDidLoad
{
[super viewDidLoad];
if ([Utils isIpad])
{
// подправляем интерфейс под iPad
}
}
Одна Storyboard
Две Storyboard, один
контроллер
- (IBAction)buttonTapped
{
if ([Utils isIpad])
{
// действие на iPad
}
else
{
// действие ...
iPad-контроллер
наследник iPhone
@interface ViewController_iPad : ViewController
!
@end
!
!
!
!
!
!
- (IBAction)buttonTapp...
Общий базовый
контроллер
@interface ViewController_iPad : ViewController
!
@end
!
!
!
@interface ViewController_iPhone : V...
Работа с несколькими
Storyboard
@interface AppDelegate : UIResponder <UIApplicationDelegate>
!
+ (AppDelegate *)instance;
...
+ (AppDelegate *)instance
{
return [[UIApplication sharedApplication] delegate];
}
!
!
!
!
- (BOOL)application:(UIApplicat...
- (IBAction)buttonTapped
{
UIStoryboard *s = [AppDelegate instance].generalStoryboard;
!
MenuViewController *m = [s
instan...
autosizing 	

& 	

autolayouts
@implementation MyView
!
- (void)layoutSubviews
{
[super layoutSubviews];
!
...
}
!
@end
@interface MyView : UIView
!
@end...
@implementation ViewController
!
- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
...
}
!
- (void)viewDidL...
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
CGRect frame = self.smallView.frame;
frame.origin.x = (self...
Auto Layout
Повороты экрана
@implementation ViewController
!
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape...
Ориентация для
UINavigationController
@interface CustomNavigationController : UINavigationController
!
@end
@implementatio...
@implementation CustomNavigationController
!
- (NSUInteger)supportedInterfaceOrientations
{
return self.topViewController....
UISplitViewController
Чтобы показывать кнопку
«Меню», надо обрабатывать
UISplitViewControllerDelegate
UIPopoverController
Домашнее задание
• продумать интерфейс для iPad	

• продумать, каким способом проще всего
добавить поддержку iPad	

• доба...
Всё!
Глеб Тарасов	

gleb34@gmail.com	

twitter.com/pilot34
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Próxima SlideShare
Cargando en…5
×

Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad

572 visualizaciones

Publicado el

Publicado en: Educación
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad

  1. 1. Поддержка iPad Разработка приложений для iOS Лекция 10 Глеб Тарасов gleb34@gmail.com
  2. 2. Вспомним прошлое занятие
  3. 3. Как анимированно передвинуть view?
  4. 4. Как анимированно передвинуть view? [UIView animateWithDuration:0.3 animations:^{ self.smallView.frame = ...; }];
  5. 5. Как последовательно запустить две анимации?
  6. 6. Как последовательно запустить две анимации? [UIView animateWithDuration:0.3 animations:^{ // первая анимация } completion:^(BOOL finished) { [UIView animateWithDuration:0.3 animations:^{ // вторая анимация }]; }];
  7. 7. Как сразу изменить свойства всех view данного типа? (например всех UILabel)
  8. 8. Как сразу изменить свойства всех view данного типа? (например всех UILabel) id a = [UILabel appearance]; [a setTextColor:[UIColor redColor]];
  9. 9. Приложения для iPad
  10. 10. Универсальные приложения
  11. 11. Способы организации • все делаем из кода • одна Storyboard на оба устройства • раздельные Storyboard на оба устройства, но контроллеры одни и те же • полностью раздельные интерфейс: две Storyboard и разные контроллеры • три Storyboard: одна только для iPhone, одна для iPad, одна для одинаковых интерфейсов
  12. 12. Проверка в коде if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { ... } + (BOOL)isIpad { return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad); } ! ! ! if ([Utils isIpad]) ...
  13. 13. Установка Storyboard
  14. 14. - (void)viewDidLoad { [super viewDidLoad]; if ([Utils isIpad]) { // подправляем интерфейс под iPad } } Одна Storyboard
  15. 15. Две Storyboard, один контроллер - (IBAction)buttonTapped { if ([Utils isIpad]) { // действие на iPad } else { // действие на iPhone } }
  16. 16. iPad-контроллер наследник iPhone @interface ViewController_iPad : ViewController ! @end ! ! ! ! ! ! - (IBAction)buttonTapped { ... }
  17. 17. Общий базовый контроллер @interface ViewController_iPad : ViewController ! @end ! ! ! @interface ViewController_iPhone : ViewController ! @end
  18. 18. Работа с несколькими Storyboard @interface AppDelegate : UIResponder <UIApplicationDelegate> ! + (AppDelegate *)instance; ! - (UIStoryboard *)iphoneStoryboard; - (UIStoryboard *)ipadStoryboard; - (UIStoryboard *)generalStoryboard; ! @property (strong, nonatomic) UIWindow *window; ! @end
  19. 19. + (AppDelegate *)instance { return [[UIApplication sharedApplication] delegate]; } ! ! ! ! - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.iphoneStoryboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil]; self.ipadStoryboard = [UIStoryboard storyboardWithName:@"Main_iPad" bundle:nil]; self.generalStoryboard = [UIStoryboard storyboardWithName:@"General" bundle:nil]; return YES; }
  20. 20. - (IBAction)buttonTapped { UIStoryboard *s = [AppDelegate instance].generalStoryboard; ! MenuViewController *m = [s instantiateViewControllerWithIdentifier:@"MenuViewController"]; ! [self presentViewController:m animated:YES completion:nil]; }
  21. 21. autosizing & autolayouts
  22. 22. @implementation MyView ! - (void)layoutSubviews { [super layoutSubviews]; ! ... } ! @end @interface MyView : UIView ! @end layoutSubviews
  23. 23. @implementation ViewController ! - (void)viewWillLayoutSubviews { [super viewWillLayoutSubviews]; ... } ! - (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; ... } ! @end
  24. 24. - (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; CGRect frame = self.smallView.frame; frame.origin.x = (self.view.frame.size.width - frame.size.width) / 2; frame.origin.y = (self.view.frame.size.height - frame.size.height) / 2; self.smallView.frame = frame; }
  25. 25. Auto Layout
  26. 26. Повороты экрана
  27. 27. @implementation ViewController ! - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; } ! @end
  28. 28. Ориентация для UINavigationController @interface CustomNavigationController : UINavigationController ! @end @implementation CustomNavigationController ! - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; } ! @end
  29. 29. @implementation CustomNavigationController ! - (NSUInteger)supportedInterfaceOrientations { return self.topViewController.supportedInterfaceOrientations; } ! - (BOOL)shouldAutorotate { return self.topViewController.shouldAutorotate; } ! @end
  30. 30. UISplitViewController
  31. 31. Чтобы показывать кнопку «Меню», надо обрабатывать UISplitViewControllerDelegate
  32. 32. UIPopoverController
  33. 33. Домашнее задание • продумать интерфейс для iPad • продумать, каким способом проще всего добавить поддержку iPad • добавить поддержку iPad в наше приложение
  34. 34. Всё! Глеб Тарасов gleb34@gmail.com twitter.com/pilot34

×