![](http://habr.habrastorage.org/post_images/13d/d3d/e16/13dd3de16ffbb05e930b0741d7b4f4b8.jpg)
Команде Бессвязного Девелопа удалось получить корпоративный аккаунт благодаря чудотворной программе Хабрахабра по поддержке начинающих стартапов без действующей монетизации. Мы — это ребята, которые частенько устраивают трансляции разработки различных приложений за 24 и 48 часов. Сегодня мы взяли курс на создание бесплатных аналогов нужных, но платных или обвешанных рекламой программ.
Чтобы наш приветственный пост не получился «Ни о чем», сегодня я расскажу о некоторых вкусностях работы с Xcode 5, подсмотренных на WWDC 2013. В программе вечера:
- Автодополнение кода: печенье, которое еще не все попробовали
- Edit in scope: шоколадный тортик, который кушают не все
- Объекты IB: назовите этот сорт клубничного желе
- Двойной статус-бар: подавайте шоколадный шейк охлажденным
- Color Blended Layers: вы неправильно наносите ромовый крем
- Concurrent Object Enumeration: покройте все сахарной пудрой
- Localization: хватит каждый раз греть духовку
Автодополнение кода
И так, вы дружите с Xcode уже больше пяти лет и думаете, что знаете о нем все? А что, если я скажу, что необязательно прописывать возвращаемый тип для инициализации автодополнения кода? Забудьте про:
Теперь можно писать вот так:
Edit in scope
Положим, у нас есть простой метод, не претендующий ни на какую интеллектуальную значимость:
Ошибка видна даже начинающему программисту: мы создали новую переменную number в зоне видимости уже существующей переменной с таким же именем. Можно, конечно, ручками поменять все названия. А что, если лень? А что, если нет времени? Но ведь можно использовать Cmd+F! Нет, нет и нет. Теперь можно навести курсор на переменную и увидеть маленький треугольничек рядом:
Нажав на эту иконку, мы вызовем контекстное меню с заветным «Edit All in Scope»:
Вот, как это выглядит в режиме реального времени:
А для любителей горячих клавиш есть отдельное сочетание (Cmd+Control+E):
Объекты IB
Я по служебному долгу частенько разбираюсь в чужом коде, а в частности, с чужими Storyboard’ами. В некоторых интерфейсах, собранных предыдущими разработчиками, черт ногу сломит. Я хочу сыграть с вами в игру: где какой UIView?
Неожиданно? Но эту ситуацию можно запросто поправить! Ведь все элементы интерфейса можно называть как угодно. Пожалуйста, придерживайтесь хорошего тона и думайте о будущих разработчиках. Может, когда-нибудь, добро вернется к вам:
Двойной статус бар
Говорите, ваше приложение идеально работает? Оно на 99,9% покрыто тестами, и вы даже поправили пару критических багов в Foundation? А что случится, если юзеру позвонят? Благо, у нас есть простой способ проверить. Симулятор поддерживает показ «расширенного» статус бара при звонке:
Чтобы правильно обрабатывать события входящего звонка и расширения статус бара, можно либо начать слушать NSNotificationCenter:
UIApplicationWillChangeStatusBarFrameNotification UIApplicationDidChangeStatusBarFrameNotification
Либо реализовать следующие методы в вашем AppDelegate:
- (void)application:(UIApplication *)applicationwillChangeStatusBarFrame:(CGRect)newStatusBarFrame; - (void)application:(UIApplication *)applicationdidChangeStatusBarFrame:(CGRect)oldStatusBarFrame;
Color Blended Layers
Всем, кто близок к программированию, очевидно, что прорисовывать прозрачные объекты сложнее, чем обрабатывать непрозрачные. Как минимум, девайсу нужно думать о фоне и тратить время на его прорисовку. Однако многие программисты пренебрегают, а некоторые даже не знают, как переводится свойство «opaque» (непрозрачный). Лучше так не делать.
Например, возьмем обычный белый UITableView и включим Color Blended Layers:
Красным симулятор показывает элементы с активным альфа каналом, зеленым — непрозрачные элементы. К сожалению, сейчас процессор тратит дополнительное время на то, чтобы рассчитать белый фон за прозрачным текстом (а ведь это системное поведение). Решается это довольно просто, двумя простыми действиями в Xcode — отмечаем галочку «Opaque» и делаем фон белым:
После, все выглядит куда приятнее глазу:
Стоит отметить, что, если вы используете картинку с альфа-каналом в своем приложении, то отметить галочкой «Opaque» будет недостаточно. Xcode уважает ваши картинки (особенно, если это картинки котят) и даже если вы скажете ему, что картинка без прозрачности — иными словами, обманите его — он все равно поступит по чести и сделает картинку прозрачной. Когда нужно делать картинку непрозрачной — делайте это в каком-нибудь графическом редакторе. Xcode сможет обрабатывать картинку, как непрозрачную, только тогда, когда у картинки нет активного альфа-канала.
Concurrent Object Enumeration
Все, что я хочу показать вам в этом пункте — это следующая пара строк кода:
NSArray *myObjects = ...; ! [myObjects enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(id obj, NSUInteger idx, BOOL *stop) { // Сделайте что-нибудь с элементом массива }];
ссылка на оригинал статьи http://habrahabr.ru/company/bdev/blog/207286/
Добавить комментарий