Как стать автором
Поиск
Написать публикацию
Обновить
11.42

Swift *

Открытый объектно-ориентированный язык

Сначала показывать
Порог рейтинга
Уровень сложности

Универсальный JSONDecoder

Время на прочтение3 мин
Количество просмотров7.4K

На данный момент подавляющее большинство мобильных приложений являются клиент-серверными. Повсюду происходит подгрузка, синхронизация, отправка событий и основным способом взаимодействия с сервером является обмен данными посредством формата json.

Читать дальше →

Собеседование: Swift. Вопросы и ответы

Время на прочтение13 мин
Количество просмотров61K
Языку программирования Swift всего четыре года, но он уже становится основным языком разработки для iOS. Развиваясь до версии 5.0, Swift превратился в сложный и мощный язык, отвечающий как объектно-ориентированной, так и функциональной парадигме. И с каждым новым релизом в нем добавляется еще больше возможностей.

Но насколько хорошо вы на самом деле знаете Swift? В этой статье вы найдете примеры вопросов для собеседования по Swift.

Вы можете использовать эти вопросы для интервьюирования кандидатов, чтобы проверить их знания или вы можете проверить свои собственные. Если вы не знаете ответа, не переживайте: к каждому вопросу есть ответ.
Читать дальше →

Добавление UICollectionViews в кастомный UITableViewCell который сделан через Xib

Время на прочтение2 мин
Количество просмотров8.3K
Я был удивлен, узнав, сколько было препятствий для реализации UICollectionView в UITableViewCell. Поэтому этот туториал здесь, надеюсь он сэкономит вам много времени.

Примечание: это туториал не для начинающих. Предполагается, что вы знаете о tableViews и создании пользовательских ячеек с файлами xib.

Также я не описываю ничего, про визульную составляющую.
Читать дальше →

Создание карточек как Tinder на Swift

Время на прочтение10 мин
Количество просмотров5.8K
image

Tinder — мы все знаем, что это приложение для знакомств, где вы можете просто отклонить или принять кого-то свайпом вправо или влево. Эта идея считывания карт теперь используется в тоннах приложений. Этот способ отображения данных для вас, если вы устали от использования табличных и коллекционных представлений. Есть множество учебников по этому вопросу, но этот проект занял у меня немало времени.
Читать дальше →

Автоматические размеры хедера и футера UITableView с AutoLayout

Время на прочтение3 мин
Количество просмотров4.5K
image

В этой статье я попытаюсь раскрыть некоторые причуды класса UITableView и покажу вам простой и самый простой способы реализовать представления верхнего и нижнего колонтитулов изменяемой высоты. Для меня простота, это когда дело доходит до написания кодом пользовательского интерфейса, но на самом деле заключается в том, чтобы не кодить никакого UI. В этой статье я буду максимально использовать interface builder :)
Я буду говорить о заголовках, но то же самое относится и к нижним колонтитулам.

image

Настройка TableView


Хедеры в табличном или простом стиле TableView ничем не отличаются от любых других строк UITableView. Настройка на самом деле довольно проста.

  • должны быть установлены sectionHeaderHeight и estimatedHeaderHeight.
  • UITableView.automaticDimension — это то, что позволяет AutoLayout вычислять высоту каждой ячейки во время выполнения.
  • estimatedHeaderHeight должен быть установлен для грубой оценки общей высоты его содержимого для отображения индикатора прокрутки.

Эти свойства могут быть установлены в инспекторе размеров при выборе TableView в вашей раскадровке.
Читать дальше →

Модульная разработка или путь туда, а не обратно

Время на прочтение4 мин
Количество просмотров8.4K

Как мы пришли к новому подходу работы с модулями в iOS приложении RaiffeisenBank.

Проблема


В приложениях Райффайзенбанка каждый экран состоит из нескольких, максимально независимых друг от друга модулей. «Модулем» мы называем визуальный компонент, имеющий своё представление. При проектировании приложения очень важно писать логику так, чтобы модули были независимыми и их легко можно было добавлять или убирать, не прибегая к рефакторингу.
Читать дальше →

Самый простой способ сделать чат в iOS приложении

Время на прочтение3 мин
Количество просмотров8.8K
Всем привет! Каждый раз при проектировании и верстке чата у меня возникал вопрос: «А можно ли это как-нибудь упростить?». На следующей неделе мне предстоит верстать большой чат для приложения, поэтому в голове опять начали появляться мысли про облегчение верстки. Немного посидев и потыкав возможности AutoLayout, я нашел способ упростить процесс верстки и дальнейшей работы по максимуму. При решении подобных задач зачастую используют UICollectionView, но в этот раз мы будем использовать UITableView.
Читать дальше →

Приложение в строке меню для macOS

Время на прочтение10 мин
Количество просмотров9K
Приложения, размещенные в строке меню, уже давно известны пользователям macOS. У некоторых из этих приложений есть «обычная» часть, другие размещены только в строке меню.
В этом руководстве вы напишете приложение, которое показывает во всплывающем окне несколько цитат известных людей. В процессе создания этого приложения вы научитесь:

  • назначать иконку приложения в строке меню
  • делать приложение размещенным только в строке меню
  • добавлять пользовательское меню
  • показывать всплывающее по запросу пользователя окно и прятать его, когда необходимо, используя Event Monitoring

Замечание: это руководство предполагает, что вы знакомы со Swift и macOS.
Поехали!

Custom instruments: когда signpost недостаточно

Время на прочтение7 мин
Количество просмотров2.6K
Instruments для Xcode компании Apple — это инструменты для анализа производительности iOS-приложения. Их используют для сбора и отображения данных, которые необходимы в отладке кода. В прошлом году Apple презентовала Custom Instruments. Это возможность расширить стандартный набор инструментов для профилирования приложений. Когда существующих инструментов недостаточно, вы сможете самостоятельно создать новые — они соберут, проанализируют и отобразят данные так, как вам потребуется.

Прошел год, а новых публичных инструментов и информации по их созданию в сети почти нет. Так что мы решили исправить ситуацию и поделиться тем, как создавали собственный Custom Instrument, который определяет причину слабой изоляции unit-тестов. Он базируется на технологии signpost (мы писали о ней в предыдущей статье) и позволяет быстро и точно определять место возникновения мигания теста.


Читать дальше →

Пишем игру «Карточки памяти» на Swift

Время на прочтение7 мин
Количество просмотров8.8K


В этой статье описывается процесс создания простой игры для тренировки памяти, которая мне очень нравится. Кроме того, что она сама по себе хороша, во время работы вы немного больше узнаете о классах и протоколах Swift. Но прежде чем начать, давайте разберемся в самой игре.
Читать дальше →

Продвинутая интерполяция строк в Swift 5.0

Время на прочтение7 мин
Количество просмотров11K


Интерполяция строк была в Swift с ранних версий, но в Swift 5.0 этот функционал был расширен, стал быстрее и значительно мощнее.

В этой статье мы пройдёмся по новым возможностям интерполяции строк и рассмотрим, как это можно применить в нашем собственном коде. Вы также можете загрузить исходники к этой статье здесь.
Поехали!

Переносим проект с Swift 4.2 на Swift 5.0

Время на прочтение3 мин
Количество просмотров5.1K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Swift 5.0: How to migrate your project and frameworks» автора Antoine Van Der Lee.

Swift 5.0 был выпущен в марте 2019 года и является первым стабильным выпуском ABI Swift. Несмотря на то, что многие ресурсы освещают новые возможности Swift 5.0, они не часто рассказывают вам о том, что вам нужно сделать, чтобы обновить свой проект до Swift 5.0.

В этом посте я рассмотрю шаги, которые вы можете предпринять, чтобы обновить существующий проект до Swift 5.0.

Проверьте, что ваш проект уже перенесен в Swift 4.2.
Не удивлюсь, если эта статья поможет убедить вашего продакт-менеджера спланировать время для перехода.
Читать дальше →

Система частиц в Core Animation. Рождественская история

Время на прочтение6 мин
Количество просмотров5.8K


Всем привет!

Рождество давно прошло, но после него у нас осталась занимательная история о том, как при помощи нечасто используемой возможности Core Animation можно создать пользователям праздничное настроение. Делюсь переводом статьи моего лондонского коллеги Алексиса.

Рождество всегда было для меня одним из самых любимых дней в году. Оно приносит в наши жизни много любви, смеха, счастья и волшебства.

Я родился и вырос в Испании, на Тенерифе — солнечном острове посреди Атлантического океана недалеко от побережья Африки. И, поверьте мне, Рождество на Тенерифе сильно отличается от Рождества в Лондоне, где я встречал его последние два года (с тех пор как начал работать в Badoo).

Одним из преимуществ жизни в Лондоне для меня стало созерцание снежинок. Здесь я увидел их впервые в жизни, это было просто невероятно!

Вспомнив об этом, я решил поделиться с вами одной интереснейшей историей, случившейся со мной в офисе незадолго до Рождества, перед тем как я отправился на Тенерифе, чтобы встретить праздник со своей семьёй.

Так уж случилось, что мне поручили одну необычную задачу со следующим описанием:

Ближайшие события

Swift 5.1 — что нового?

Время на прочтение6 мин
Количество просмотров11K


Swift 5.0 стал доступен с выходом Xcode 10.2, но работа над следующей версией продолжается и уже есть известия о том, чего в ней можно ждать.

Ключевая особенность Swift 5.1 — модульная стабильность (module stability), которая позволяет нам использовать сторонние библиотеки, не волнуясь о том, при помощи какой версии компилятора Swift они были созданы. Похоже на ABI stability, которую мы получили в Swift 5.0, но есть небольшая разница: ABI stability разрешает различия в версиях Swift на этапе выполнения, а module stability — на этапе компиляции.

Кроме этого важного новшества мы получим несколько важных улучшений в Swift, и в этой статье мы пройдемся по ним с примерами, чтобы можно было увидеть их в деле.
Что новенького в Swift 5.1?

Проблемы паттерна Координатор и при чем тут RouteComposer

Время на прочтение11 мин
Количество просмотров10K

Я продолжаю цикл статей о библиотеке RouteComposer которую мы используем, и сегодня я хочу поговорить о паттерне Координатор. К написанию этой статьи меня побудило обсуждение одной из статей о паттерне Координатор тут на Хабре.


Паттерн Координатор, будучи представленным не так давно, набирает все большую популярность в кругах IOS разработчиков, и, в целом, понятно почему. Потому что средства из коробки, которые предоставляет UIKit представляют собой довольно не универсальное месиво.


image

Читать дальше →

PhotoGuru перешел на «темную сторону» и «поумнел»

Время на прочтение2 мин
Количество просмотров2.2K
Я продолжил эксперименты с прототипом программы PhotoGuru, чтобы понять может ли распознавание «стиля» фотографии чем-то помочь пользователю.

В новой версии обновлен интерфейс и программа выдает всего один ответ. Чаще всего, это фамилия фотографа и процент «похожести» фотографии пользователя на стиль одного из шести фотографов.


Читать дальше →

UICollectionView всему голова: Изменение представления на лету

Время на прочтение8 мин
Количество просмотров36K
Привет, Хабр! Представляю вашему вниманию перевод статьи "UICollectionView Tutorial: Changing presentation on the fly".

В данной статье мы рассмотрим использование различный способов отображение элементов, а также их переиспользование и динамическое изменение. Здесь мы не будем рассматривать основы работы с коллекциями и autolayout.

В результате мы получим такой пример:

Читать дальше →

Swift 5.0. Что нового?

Время на прочтение6 мин
Количество просмотров20K

Swift 5 — долгожданный релиз, включающий в себя несколько десятков улучшений и исправлений. Но самой главной целью релиза Swift 5.0 было достижение ABI стабильности. В этой статье вы узнаете, что такое ABI и что стабильный ABI даст iOS/macOS разработчикам. А также проведём разбор нескольких новых фич Swift 5.


Читать дальше →

Списки захвата в Swift: в чём разница между ссылками weak, strong и unowned?

Время на прочтение7 мин
Количество просмотров48K

Джозеф Райт, «Пленный» — иллюстрация «сильного» захвата

Список «захваченных» значений находится перед списком параметров замыкания и может «захватить» значения из области видимости тремя разными способами: используя ссылки «strong», «weak» или «unowned». Мы часто его используем, главным образом для того, чтобы избежать циклов сильных ссылок («strong reference cycles» aka «retain cycles»).
Начинающему разработчику бывает сложно принять решение, какой именно применить способ, так что вы можете потратить много времени, выбирая между «strong» и «weak» или между «weak» и «unowned», но, со временем, вы поймёте, что правильный выбор — только один.
Давайте взглянем на проблему.

Signpost: когда брейкпоинтов недостаточно

Время на прочтение8 мин
Количество просмотров4.7K
В предыдущей статье мы узнали о причинах нестабильности unit-тестов и способах борьбы с этим. Теперь мы хотим рассмотреть один из новых инструментов Apple для отладки и профилирования кода. Речь о представленном на WWDC 2018 фреймворке для логирования os_log, который был расширен инструментом для анализа производительности — os_signpost.



В одном из спринтов нам поставили задачу реализовать генерацию pdf-документа на client-side. Мы выполнили задачу и успешно продемонстрировали результаты команде. Но нам захотелось убедиться в эффективности технических нюансов принятого решения. В этом нам помог signpost. С ним нам удалось ускорить отображение документа в несколько раз.

Чтобы узнать побольше о технологии применения os_signpost, посмотреть, где он может вам помочь и как уже помог нам, заходите под кат.
Читать дальше →