Выпустили мелкое обновление AllCafe для iPhone. Основные изменений - поддержка iPhone 3G (то бишь поддержка всей 4-й ветки iOS) и сжатие фотографий при добавлении отзывов на клиенте. К тому же теперь они загружаются в правильной ориентации (вертикальной или горизонтальной).
Что приятно - заапрувили всего лишь за сутки обновление. Похоже ревьюверы работают в ускоренном режиме сейчас - с 22 декабря по 29 декабря даже iTunes Connect будет закрыт на праздники.
В эти выходные подруга позвала помочь на студию снять ролик для их проекта по учёбе. Тема - путешествия. Это что-то вроде промо-ролика к их выставке. Изначальная идея не удалась, в итоге просто снимали то, что было. Результат получился очень забавный и смешной, и музыку выбрали по моей подсказке. Надо больше снимать. Результат:
Оператор: Sergey Armodin
Монтаж и обработка видео Nadia Silver и Kira Kornienko
Музыка: Clint Mansell (OST Moon)
Шпаргалка. Инструкция по тому, где скачать и как встроить - в документации Facebook. Несмотря на то, что обновляли они проект на Github недавно (23 ноября на данный момент), в нагрузку идёт у них старая версия фреймворка для работы с JSON. А, т.к. в мой проект уже встроена более новая версия фреймворка приложение не компилилось.
Решение:
после добавления SDK в проект удалить папку JSON из SDK Facebook;
в файле FBRequest.m заменить строку #import "JSON.h" на #import "SBJson.h";
Мы наконец-то сделали первую версию AllCafe для iPhone, которую уже можно показывать.
Сколько раз вы попадали в ситуацию, когда приходишь в заведение - а там нет мест или просто вам там сегодня не нравится? Я - довольно часто. И первая мысль - а где можно ещё посидеть/поесть/попить рядом?
На нашем портале AllCafe.ru собрана довольно большая база ресторанов по всей России. А также отзывов пользователей о них. Мы сделали приложение для iPhone, которое, кстати, весил всего около 200 кб. С его помощью можно посмотреть на карте ближайшие заведения, либо увидеть их списком с примерным расстоянием.
О каждом заведении можно посмотреть краткую информацию - адрес, телефон (само собой можно сразу набрать номер из приложения), что за кухня в этом заведении, почитать новости о заведении, и, что немаловажно, почитать отзывы - что люди пишут и стоит ли туда идти.
Помимо этого можно самому написать отзыв о заведении. Например, сидите вы весь довольный (или недовольный) в ресторане - открываете и добавляете отзыв.
Это пока только то, что на данный момент есть в приложении. Список запланированных фич довольно большой и работы мне хватит надолго.
Собственно - это моё первое приложение для iOS. С почином меня.
Мой Rode Stereo VideoMic не справлялся с громкими концертами и засирал звук. Во вторник я стал обладателем прекрасного девайса Zoom H4N.
Описывать чего в нём крутого не буду - это можно прочитать в интернете, скажу только, что качество записи у него очень классное. А самое главное - он отлично справляется с концертами. Дабы испытать его в бою - я сразу пошёл на концерт в Орландину, там вчера выступали ребята из Германии - WE BUTTER THE BREAD WITH BUTTER. Играют они тяжеляк, поэтому рекордер попал сразу в условия громкого и тяжёлого концерта.
В настройках рекордера есть пункт COMP/LIMITER, я так понимаю это некий набор настроек для записи. Снял видео с концерта со звуком из рекордера. Оно из двух частей. Первая - записывал с пресетом LIMIT2 (CONCERT) и ручным уровнем записи (уровень был 8 из 100). То, что записалось, мне не очень нравится. А вот вторая часть была с пресетом LIMIT3 (STUDIO) - с ним даже в домашних условиях звук получается чище и звучит приятнее. А вот уровень записи выставил AUTO. Результат мне нравится сильно больше.
В любом случае то, как записался звук на таком концерте - показатель того, что устройство пишет всё очень достойно. На нём, пожалуй, и остановлюсь.
С начала видео и до 9:43 идёт LIMIT2 (CONSERT) и уровень записи 8, с 9:43 и до конца идёт LIMIT3 (STUDIO) и автоматический уровень записи. Результат:
Появилась нужна использовать в проекте и UINavigationController, и UITabBarController одновременно. Два способа как это сделать.
Создадим пустой проект. Прописывать контроллеры будем вручную. Итак, у нас есть AppDelegate.h и AppDelegate.m.
Способ 1. UINavigationController внутри UITabBarController. (от @vox_humana)
В этом способе в приложении всегда есть Tab Bar, он всегда виден и между табами всегда можно переключаться. Внутри одного из табов (или можно сделать во всех) есть вид с UINavigationController, в котором можно делать перемещение между видами с помощью push и pop.
Создадим два новый файла типа UIViewController subclass (с галкой with XIB for user interface). Назовём их, скажем, FirstViewController и SecondViewController. Это будут два наших вида, которые будут выводиться в двух табах.
Внутри метода didFinishLaunchingWithOptions прописываем следующее:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// создаём окно для приложения по размеру экрана
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// создаём два экземпляра UIViewController
UIViewController *viewController1, *viewController2;
// первый вид инициализируем с интерфейсом нашего первого контроллера
viewController1 = [[UINavigationController alloc] initWithRootViewController:[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil]];
// второй вид инициализируем с интерфейсом нашего второго контроллера
viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
// подключаем наши виды к таб-бару
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];
// как основной контроллер приложению ставим tabBarController
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
}
Теперь при запуске у нас появится таб-бар внизу экрана. В каждом табе будет по контроллеру. Первый контроллер (viewController1) будет иметь в себе UINavigationController, что позволит нам делать push и pop видов. Для примера добавим ещё один UIViewController subclass (с галкой with XIB for user interface). Назовём его MyViewController. Таким образом у нас уже будет 3 UIViewController в проекте:
Поскольку у нас viewController1 (он же FirstViewController) содержит в себе UINavigationController, то добавим в него какое-нибудь действие, чтобы перейти в наш контроллер. Сначала в начале FirstViewController.m сделаем #import "DetailViewController.h", затем добавим метод:
Добавить в xib-файл UITabBarController, связать его в Connections Inspector. Создаём два вида в проекте - FirstViewController и SecondViewController, для UITabBarController, что внутри RootViewController.xib привязываем табы к этим видам.
Общая суть в том, что self.window.rootViewController - это UINavigationController. У приложения есть RootViewController со своим xib. Его можно оставить пустым, но ему нужно прописать @property:
Когда вид RootViewController загружается - мы сразу делаем push в наш tabBarController. Таким образом первое, что видно при запуске - это табы и верхнюю панель с кнопкой назад, которую в этом месте можно скрыть и показывать только дальше где-то.
Главный плюс - внутри видов, которые грузятся внутри UITabBarController - можно в коде делать перемещение основного экрана в другие виды и возвращаться обратно. Видео:
По такому принципу сделано приложение ВКонтакте для iPhone. Реализовано в моём примере, пожалуй, не идеально, при желании можно допилить, но работает. Скачать пример.
На будущее пригодится, заодно сам ещё раз всё проделал и закрепил.