Some time ago, there was an article published on the topic of DataSource modeling.

There is a continuation, or to be more precise, the evolution of the idea, elimination of the shortcomings inherent in the previous version, and ultimately an approach that takes place in the real practice of developing applications for iOS.

The solution proposed earlier was not possible to reuse. In other words, the developer had to copy a large piece of code every time he needed to model the dataSource. The only reason for the existence of such a drawback is the use of the Section.Kind and…


Доброго времени суток. Прошло около года с момента моей первой публикации.

На данный момент времени данная публикация, среди остальных, является самой читаемой, что, естественно, наводит на мысли о дополнении и развитии материала на базе приобретенного опыта разработки. В данной статье вы, как и прежде, найдете решение, позволяющее модально презентовать экран с пользовательской анимацией и, дополнительно, смещать презентованный экран, используя физику реальных объектов — UIKit Dynamics, а также реализовывать эффект сопротивления при оттягивании за установленные пределы — Rubber Band Effect. В примере, для ускорения процесса верстки (упрощения создания constraints) использовалась библиотека SnapKit.

В целях обучения был создан обычный UIViewController с оранжевым…


Одним из самых используемых компонентов UI является UILabel. По частоте использования он вполне может соперничать с такими гигантами, как UITableView и UICollectionView. И в большинстве случаев возможностей стандартного UILabel хватает. Однако если дизайнеры не желают видеть в приложении обычное троеточие в качестве сокращения строки, то разработчику придется столкнуться с некоторыми сложностями, поскольку UILabel не имеет метода для указания токена в качестве сокращения.

Далее будет предложено расширение стандартных возможностей UILabel для возможности кастомизации truncationToken. В качестве примера будет представлен label, при нажатии на который отображается весь текст.

Очевидно, что для того, чтобы указывать токен сокращения, необходимо добраться до того уровня абстракции…


Некоторое время назад была опубликована статья на тему моделирования DataSource.

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

Решение, предложенное ранее не представлялось возможным переиспользовать. Другими словами, разработчику приходилось копировать довольно объемную часть кода каждый раз, когда нужно было моделировать dataSource. Единственная причина существования такого недостатка — это использование перечислений Section.Kind и Row.Kind, поскольку swift не позволяет добавлять case’ы к перечислению из extension.

Также нужно обратить внимание на еще один недостаток — полностью одинаковая реализация Section.Kind и…


It’s hard to imagine even one iOS application that doesn’t use a UITableView or UICollectionView. Therefore, quite often it becomes necessary to implement dataSource. This article will introduce the idea of dataSource modeling to simplify handling table or collection events and improve code readability.
Let me leave a little digression. As an example, a profile screen of the following type will be developed.


Сложно представить хотя бы одно приложение, где не применяется UITableView или UICollectionView. Поэтому довольно часто возникает необходимость в реализации dataSource. В данной статье будет представлена идея моделирования dataSource, упрощающая обработку событий таблицы или коллекции и повышающую читаемость кода.

Позволю небольшое отступление. В качестве примера будет разрабатываться экран профиля следующего вида.


Порой, необходимо в некотором смысле украсить или, если выражаться точнее, реализовать идею дизайнера, кастомизировав компонент UISlider. Тем болле, что последнее время популярны слайдеры с относительно небольшим thumb, который увеличивается при нажатии и, естественно, в самой различной раскраске. В этом посте будут представлены решения для осуществления данной идеи, а также некоторые тонкости, приобретенные в процессе разработки.

Итоговый результат стоит искать в конце.

Достаточно взглянуть на приложение AppleMusic или Podcasts, чтобы убедиться в том, что современным трендом является небольшой thumb, при нажатии на который, он увеличивается в размерах.

Первое, что приходит в голову — это воспользоваться методом

setThumbImage(_:for:)

для того, чтобы задать…


Greetings to all! Quite often you can find a form for entering a phone number in mobile applications. And the most common use cases are user registration and authorization. However, Apple does not offer a native solution for formatting a phone number. This post will demonstrate the development process of a fairly simple and at the same time high perfrormance PhoneFormatter.

By searching on this topic

and analysing the existing solutions, there are the common basis on which a PhoneFormatter is based. …


Приветствую всех! Довольно часто можно встретить форму ввода номера телефона в мобильных приложениях. И самые распространенные примеры — это регистрация и авторизация пользователя. Однако Apple на текущий момент времени не предлагает библиотечного решения для форматирования номера телефона. В данном посте будет продемонстрирован процесс разработки достаточно простого и в то же время быстрого PhoneFormatter.

Выполнив поиск на данную тему

и проанализировав существующие решения, можно выделить основу, на которой базируется такой Formatter. Это маска, или, как её чаще называют, pattern, в соответствии с которым выполняется форматирование текста.

Самые распространенные способы задания маски — это обозначить символом # любую цифру, а символом *…


Good day. It has been about a year since my first publication.

Today, this publication, among the rest, is the most read, which, of course, suggests an idea of supplementing and expanding the material based on the development experience gained. In this article, you, as before, will find a solution that allows you to modally present a screen with custom animation and, additionally, swipe the presented view using the physics of real objects — UIKit Dynamics, as well as implement the effect of resistance when swiping outside the limits — Rubber Band Effect. …

Ace Rodstin

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store