2ГІС давно хотів поділитися з користувачами айфонів своїми знаннями про телефонних номерах компаній з довідника. Android-платформа давала таку можливість, а ось під iOS відповідного інструменту довго не було.

В червні ми їздили на WWDC 2016, і на одній із сесій хлопці з Apple обмовилися, що нарешті-то можна робити «gorgeous astonishment» — визначник номерів під iOS 10. Нашій радості не було меж, але до пори до часу: як Apple любить, фічу вона надала з низкою обмежень.

Читати далі →



Локалізація — це процес, коли ви створюєте для вашого додатки підтримку інших мов. Часто ви спочатку робите додаток з англомовним інтерфейсом і потім локалізуєте його на інші мови, наприклад, на японський.

Процес локалізації — трудомісткий, а його кроки потихеньку змінюються по мірі відновлення XCode. Цей пост пояснює кожний крок на основі останньої версії XCode (7.3.1).

Переведено в Alconost

Читати далі →

Кожен розробник час від часу шукає роботу і проходить співбесіди. Хто хоче спробувати щось нове, отримати бобільшу ЗП або потрапити в компанію, в яку завжди мріяв. Не оминула ця подія і мене стороною.

Відвідавши безліч компаній, я вирішив поділитися спостереженнями про те, як найчастіше відбувається набір фахівців, у тому числі технічне співбесіду і просто спілкування з потенційними колегами. І після запропонувати свої ідеї щодо поліпшення загальноприйнятого процесу.

Щоб у підсумку співбесіду не виглядало як для здобувача:



Стаття в першу чергу буде корисна всім, хто шукає роботу в середовищі iOS розробки або хоч якось пов'язаний з набором IT фахівців: проводить технічні співбесіди або будь-які інші.

І ласкаво просимо під кат.

Читати далі →

Routing шар в iOS-додатках

чи Траплялося з вами, що ви відкрили Storyboard і від побаченого вас починають переповнювати позитивні емоції?

У цей момент, можливо, ви замислюєтеся, що добре продумана навігація між екранами (надалі Routing) у великих проектах може стати вкрай важливим завданням, вирішення якого допоможе економити час і нерви всім, хто буде брати участь у проекті.
Читати далі →

iOS: Робота з галереєю (Photos framework). Частина 2

Привіт, Хабр! У цій статті я розповім про роботу з відео, live-фото і відстеження змін в галереї за допомогою Photos framework. Для кращого розуміння статті рекомендую ознайомитися з попередньою статтею.

Читати далі →

Багатопоточність (concurrency) в Swift 3. GCD і Dispatch Queues

Треба сказати, що многопоточность (сопсиггепсу) в iOS завжди входить до питання, що задаються на інтерв'ю розробників iOS додатків, а також в число топ помилок, які роблять програмісти при розробці iOS додатків. Тому так важливо володіти цим інструментом досконало.
Отже, у вас є додаток, воно працює на
main thread
(головному потоці), який відповідає за виконання коду, що відображає ваш користувальницький інтерфейс (
UI
). Як тільки ви починаєте додавати до вашого додатком такі «затратні за часом» шматки коду, як завантаження даних з мережі або обробка зображень на
main thread
(головному потоці), то робота вашого
UI
починає сильно сповільнюватися і навіть може призвести до повного його «заморожування».



Як можна змінити архітектуру програми, щоб таких проблем не виникало? У цьому випадку на допомогу приходить багатопоточність (
сопсиггепсу
), яка дозволяє одночасно виконувати дві або більш незалежні задачі (
завдання
): обчислення, завантаження даних з мережі або з диска, обробку зображень і т. д.

Читати далі →

UIColor і UIImage в XCode 8 за допомогою символів

Робота з UIImage і UIColor з коду була не дуже зручною, тому що важко уявити собі колір
UIColor(red: 0.2, green: 0.4, blue: 0.6, alpha: 1)
або
UIImage(named: "pattern25")
, якщо ти не дизайнер, звичайно.
Для мене було дивом те, що Apple зробили в останніх версіях Playground, а саме
  • Можливість вказувати колір, вибираючи з палітри кольорів:
image
  • Можливість вибирати зображення з тих, що знаходяться в ресурсах:
image
Колір представлений дуже наочно і при натисканні на нього, можна дізнатися які значення RGBA він має і подтюнить його за необхідності.
Мініатюри картинок теж виглядають набагато наочніше, ніж просто назви ресурсів. До того ж инициализируя UIImage за допомогою failable initializer
init(named: String) -> UIImage?
ми ризикуємо отримати
nil
, неправильно вказавши ім'я ресурсу. Літерали ж завжди повертають значення.
Читати далі →