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

🏁 Итак:

1. Заполнение UIButton

Мне часто приходится добавлять отступы к UIButton. Вместо того, чтобы настраивать titleEdgesInsets и contentEdgeInsets, я создал этот простой CGSize расширение, которое я затем использую в подклассах UIButton:

2. Выделение частей строки

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

3. Массив индексов с использованием IndexPath

Вы когда-нибудь писали что-то подобное в своей реализации tableView (_: cellForRowAt :)?

Привязка данных к ячейкам с использованием пути индекса строки в качестве индекса массива является обычной практикой. Я почти каждый день пишу эту строку кода (или что-то очень похожее) и иногда все еще забываю добавить .row к пути индекса. Чтобы каждый раз экономить 0,15 секунды, я расширил стандартный массив Swift этой простой функцией:

4. Поиск супервизоров определенного типа.

Вы когда-нибудь хотели получить доступ к ячейке табличного представления из текстового поля, встроенного в эту ячейку? Может быть, получить доступ к представлению коллекции из подкласса ячейки представления коллекции?

Я тебя накрыл:

5. Встраивание контроллера представления в другой контроллер представления, также известный как представления контейнера.

Основная проблема с подходом MVC от Apple кроется в его названии. Это массивные контроллеры просмотра! Выбор архитектуры на самом деле является очень обсуждаемой темой среди разработчиков iOS.

Мои пять центов: вполне нормально придерживаться шаблона MVC, если вы соблюдаете принцип единой ответственности и используете представления контейнеров внутри своих контроллеров представлений. Это гарантирует, что контроллер представления выполняет только одно задание, и упрощает вашу реализацию. Дополнительным преимуществом является то, что вы можете очень легко повторно использовать свои контроллеры представления, а сложные пользовательские интерфейсы становятся вполне управляемыми, поскольку они построены из компактных компонентов пользовательского интерфейса, которые все управляют своим собственным состоянием.

Расширение, которое я использую для встраивания контроллеров представления:

5 + 1 Управление цветами в вашем приложении

С выпуском iOS 11 Apple представила именованные цвета. Это позволяет вам упорядочивать цвета в каталогах ресурсов, как если бы вы делали это с изображениями, причем очень аккуратно. Одна из проблем заключается в том, что необходимо указать в коде ссылку на UIColors следующим образом:

Это, конечно, довольно подвержено ошибкам (представьте, что вам нужно ссылаться на этот цвет в 10 разных местах вашего приложения), и было бы намного лучше воспользоваться преимуществами безопасности типов Swift (что также дает нам автозаполнение).

Этого легко добиться, расширив UIColor вычисленными свойствами для наших именованных цветов:

Совет. Не называйте свои цвета «Синий», «Светло-серый» или т. д. Вместо этого назовите их по их роли в пользовательском интерфейсе: «Акцент», « Primary »,« SecondaryText »и т. Д. Это позволит избежать путаницы при попытке назвать цвет (фиолетовый или темно-синий)? Кроме того, при необходимости будет очень легко изменить цветовую схему приложения.

🎉 Спасибо за внимание!

Надеюсь, вы нашли что-то полезное для своих собственных проектов.

Вы тоже ленивый разработчик? Какие расширения вы используете в своем коде? Дай мне знать в комментариях!

Узнайте, как лучше обрабатывать шрифты в приложении для iOS! 🤖