Спасибо, что заглянули, сегодня я покажу вам пять небольших расширений 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! 🤖