42
Нестандартные интерфейсы Разработка приложений для iOS Лекция 9 Глеб Тарасов [email protected]

Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

  • Upload
    -

  • View
    310

  • Download
    9

Embed Size (px)

Citation preview

Page 1: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Нестандартные интерфейсы

Разработка приложений для iOS

Лекция 9

Глеб Тарасов[email protected]

Page 2: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Вспомним прошлое занятие

Page 3: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Как сохранить строку в файл?

Page 4: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Как сохранить строку в файл?

[str writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];

Page 5: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Через что можно сохранять небольшие данные, вроде

настроек?

Page 6: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Через что можно сохранять небольшие данные, вроде

настроек?

через NSUserDefaults

Page 7: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Какие объекты нужно создать, чтобы начать работу с Core Data

Page 8: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Какие объекты нужно создать, чтобы начать работу с Core Data

NSManagedObjectModel, NSPersistentStoreCoordinator,

NSManagedObjectContext

Page 9: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

От какого объекта наследуются все сущности, которые мы вычитываем

из Core Data?

Page 10: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

От какого объекта наследуются все сущности, которые мы вычитываем

из Core Data?

NSManagedObject

Page 11: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Как загрузить все объекты User из Core Data?

Page 12: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Как загрузить все объекты User из Core Data?

NSManagedObjectContext *context = ...;

NSFetchRequest *f = [NSFetchRequest fetchRequestWithEntityName:@"User"];

NSArray *users = [context executeFetchRequest:f error:nil];

Page 13: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Какая библиотека упрощает работу с Core Data?

Page 14: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Какая библиотека упрощает работу с Core Data?

MagicalRecord

Page 15: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Анимации

Page 16: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Свойства UIView, которые ,можно анимировать:

• frame,• transform,• alpha,• backgroundColor

Page 17: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Как анимировать?

[UIView animateWithDuration:1 animations:^{ // тут меняем свойства }];

Page 18: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

[UIView animateWithDuration:1 animations:^{ // тут меняем свойства } completion:^(BOOL finished) { // это выполняется после анимации }];

Page 19: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

[UIView animateWithDuration:1 animations:^{ self.smallView.backgroundColor = [UIColor greenColor]; }];

[UIView animateWithDuration:1 animations:^{ self.smallView.frame = CGRectMake(50, 200, 100, 100); }];

Цвет

Положение

Page 20: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Прозрачность

[UIView animateWithDuration:1 animations:^{ self.smallView.alpha = 0; }];

[UIView animateWithDuration:1 animations:^{ self.smallView.alpha = 1; }];

скрыть

показать

Page 21: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Последоваительные анимации

[UIView animateWithDuration:1 animations:^{ self.smallView.transform = CGAffineTransformMakeRotation(M_PI); } completion:^(BOOL finished) { [UIView animateWithDuration:1 animations:^{ self.smallView.transform = CGAffineTransformIdentity; }]; }];

Page 22: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Изменение интерфейса

Page 23: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Стиль навбара

UINavigationBar *bar = self.navigationController.navigationBar; bar.barTintColor = [UIColor blueColor]; UIFont *font = [UIFont fontWithName:@"HelveticaNeue-Light" size:19]; bar.titleTextAttributes = @{ NSForegroundColorAttributeName : [UIColor whiteColor], NSFontAttributeName : font};

Page 24: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс
Page 25: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Appearance

id appearance = [UINavigationBar appearance]; [appearance setBarTintColor:[UIColor blueColor]]; ,UIFont *font = [UIFont fontWithName:@"HelveticaNeue-Light" size:19]; ,NSDictionary *attrs = @{ NSForegroundColorAttributeName : [UIColor whiteColor], NSFontAttributeName : font}; [appearance setTitleTextAttributes:attrs];

Page 26: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { id appearance = [UILabel appearance]; [appearance setTextColor:[UIColor redColor]]; return YES; }

Page 27: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Стиль статус-бара

View controller-based status bar appearance = NO

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { application.statusBarStyle = UIStatusBarStyleLightContent; return YES; }

Page 28: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс
Page 29: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс
Page 30: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

view.layer

self.smallView.layer.borderWidth = 3; self.smallView.layer.borderColor = [UIColor redColor].CGColor;

граница

круглые углы

self.smallView.layer.cornerRadius = 5;

Page 31: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

тени

self.smallView.layer.shadowRadius = 5; self.smallView.layer.shadowOpacity = 1; self.smallView.layer.shadowOffset = CGSizeMake(2, 2);

Page 32: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

UIWindow tintColor

Page 33: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Дизайн

Page 34: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Sketch app

http://www.bohemiancoding.com/sketch/beta/

Page 35: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс
Page 36: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс
Page 37: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс
Page 38: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс
Page 39: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Работа с дизайнером

• макеты PSD

• отдельные PNG с прозрачным фоном

Page 40: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Нестандартные контролы

https://www.cocoacontrols.com

Page 41: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Домашнее задание

• украсить интерфейс

Page 42: Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс

Всё!

Глеб Тарасов [email protected] twitter.com/pilot34