Курсы по мобильной разработке. 3 лекция. Сложные...
Transcript of Курсы по мобильной разработке. 3 лекция. Сложные...
![Page 1: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/1.jpg)
Построение интерфейсов(продолжение)
Контроллеры, сложные интерфейсы
Разработка под iOS
Лекция 3
Глеб Тарасов
![Page 2: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/2.jpg)
Сложные контроллеры
![Page 3: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/3.jpg)
UINavigationController
![Page 4: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/4.jpg)
![Page 5: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/5.jpg)
ViewController *c = [[ViewController alloc] initWithNibName:@"ViewController"
bundle:nil];
UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:self.viewController];
![Page 6: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/6.jpg)
- (IBAction)buttonTapped{ UIViewController *c = [[SubViewController alloc] initWithNibName:@"SubViewController" bundle:nil];
[self.navigationController pushViewController:c animated:YES];}
![Page 7: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/7.jpg)
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil
bundle:nibBundleOrNil]; if (self) { self.title = @"ViewController"; } return self;}
![Page 8: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/8.jpg)
![Page 9: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/9.jpg)
UITabBarController
![Page 10: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/10.jpg)
![Page 11: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/11.jpg)
ViewController *c = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
SubViewController *s = [[SubViewController alloc] initWithNibName:@"SubViewController" bundle:nil]; UITabBarController *tc = [[UITabBarController alloc] init];
tc.viewControllers = [NSArray arrayWithObjects:c, s, nil];
![Page 12: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/12.jpg)
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil
bundle:nibBundleOrNil]; if (self) { self.title = @"ViewController"; self.tabBarItem.image = [UIImage imageNamed:@"1.png"]; } return self;}
![Page 13: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/13.jpg)
![Page 14: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/14.jpg)
UIPageViewController
![Page 15: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/15.jpg)
StoryBoard(демонстрация)
![Page 16: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/16.jpg)
Варианты интерфейсов
![Page 18: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/18.jpg)
Tabs
![Page 19: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/19.jpg)
Dashboard
![Page 20: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/20.jpg)
UITableView + UINavigationController
Гид Покупок: Продукты
![Page 21: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/21.jpg)
Widget
Клуб Любителей Аудиокниг
![Page 22: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/22.jpg)
Нестандартные интерфейсы
News360
![Page 23: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/23.jpg)
Распознавание жестов
![Page 24: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/24.jpg)
UIGestureRecognizer
- (void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
UIView:
![Page 25: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/25.jpg)
UITapGestureRecognizerUITapGestureRecognizer *t = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped)];t.numberOfTapsRequired = 1;t.numberOfTouchesRequired = 1;[self.view addGestureRecognizer:t];
![Page 26: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/26.jpg)
UIPanGestureRecognizerUIPanGestureRecognizer *p = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];[self.view addGestureRecognizer:p];
- (void)pan:(UIPanGestureRecognizer *)sender{ CGPoint t = [sender translationInView:self.view]; CGPoint v = [sender velocityInView:self.view]; NSLog(@"%@", NSStringFromCGPoint(t)); NSLog(@"%@", NSStringFromCGPoint(v));}
![Page 27: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/27.jpg)
UIPinchGestureRecognizerUIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinch:)];[self.view addGestureRecognizer:pinch];
- (void)pinch:(UIPinchGestureRecognizer *)sender{ CGFloat scale = sender.scale; NSLog(@"%g", scale);}
![Page 28: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/28.jpg)
UIRotationGestureRecognizerUIRotationGestureRecognizer *r = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotate:)];[self.view addGestureRecognizer:r];
- (void)rotate:(UIRotationGestureRecognizer *)sender{ CGFloat r = sender.rotation; NSLog(@"%g", r);}
![Page 29: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/29.jpg)
• UISwipeGestureRecognizer • UILongPressGestureRecognizer
UISwipeGestureRecognizer *s = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];s.direction = UISwipeGestureRecognizerDirectionLeft;[self.view addGestureRecognizer:s];
UILongPressGestureRecognizer *p = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];p.minimumPressDuration = 0.5;[self.view addGestureRecognizer:p];
![Page 30: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/30.jpg)
UIGestureRecognizerDelegate
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer;
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer: (UIGestureRecognizer *)otherGestureRecognizer;
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
![Page 31: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/31.jpg)
UIGestureRecognizerState
typedef enum { UIGestureRecognizerStatePossible,
UIGestureRecognizerStateBegan,
UIGestureRecognizerStateChanged,
UIGestureRecognizerStateEnded,
UIGestureRecognizerStateCancelled, UIGestureRecognizerStateFailed, UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEnded } UIGestureRecognizerState;
![Page 32: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/32.jpg)
Анимация
![Page 33: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/33.jpg)
[UIView beginAnimations:nil context:nil];[UIView setAnimationDuration:0.5];
self.view.frame = CGRectMake(100, 100, 50, 50);
[UIView commitAnimations];
[UIView beginAnimations:nil context:nil];self.view.alpha = 0;[UIView commitAnimations];
![Page 34: Курсы по мобильной разработке. 3 лекция. Сложные интерфейсы.](https://reader033.fdocument.pub/reader033/viewer/2022052822/554c1eabb4c905ec518b54cf/html5/thumbnails/34.jpg)
[UIView beginAnimations:nil context:nil];[UIView setAnimationDelegate:self];[UIView setAnimationDidStopSelector:@selector(animationFinished)];
self.view.alpha = 0;
[UIView commitAnimations];
- (void)animationFinished{ //...}