EasySwift iOS🍏
3.03K subscribers
269 photos
8 videos
394 links
Все самое интересное в мире iOS разработки 🧑🏻‍💻

Предложить статью или новость: @EasySwiftBot

По всем вопросам обращаться к @itereznikov
Download Telegram
Шаблоны проектирования простым языком. Порождающие шаблоны

Шаблоны проектирования — это руководства по решению повторяющихся проблем. Это не классы, пакеты или библиотеки, которые можно было бы подключить к вашему приложению и сидеть в ожидании чуда. Они скорее являются методиками, как решать определенные проблемы в определенных ситуациях.

Будьте осторожны
шаблоны проектирования не являются решением всех ваших проблем;
не пытайтесь использовать их в обязательном порядке — это может привести к негативным последствиям. Шаблоны — это подходы к решению проблем, а не решения для поиска проблем;
если их правильно использовать в нужных местах, то они могут стать спасением, а иначе могут привести к ужасному беспорядку.

https://tproger.ru/translations/design-patterns-simple-words-1/
🔥51
Очень хороший материал с примерами на очень важную тему 🙃
Generics 👍🏻
Материал, конечно, больше для новичков, но от этого он менее хорошим не становится. А сами дженерики используются в куче языков, поэтому разобраться в них точно нужно всем! 🤓
https://www.avanderlee.com/swift/generics-constraints/
👍8🔥2
Хранение и использование кастомных ресурсов (картинки, шрифты, цвета) сейчас есть, наверное, в каждом приложении. И часто в этом всём встречается псевдо-контролируемый хаос 🤯
Так вот, чтобы уйти от иллюзии контроля и действительно начать удобно работать с ресурсами, автор предлагает простой, удобный и type-safe подход 👍
Конечно речь идёт об Assets обвязанных enum-ами. Возможно, многие уже поняли, о чём речь, а может даже и используют так. Но в любом случае, вот статья с примерами удобного подхода к использованию ресурсов в вашем приложении 🔥
https://runhum.medium.com/type-safe-assets-in-swift-798cab38f221
👍5
Swiftly — это универсальный справочник, быстрая шпаргалка для разработчиков Swift. Он содержит справочные примеры использования всех нужных операторов для разработчиков всех уровней.

https://swiftly.dev/
🔥15
Как iOS 16 ускоряет запуск вашего приложения.

Эти улучшение связано с ускорением проверок протоколов, которые были медленными. Кроме того, в iOS 16 сокращается время загрузки двоичного файла за счет уменьшения объема данных, загружаемых с диска. Об этом вы также можете прочитать в предыдущей статье.

https://is.gd/CgCtJU
🔥2
Решить, какую структуру данных использовать для представления заданного набора значений, часто бывает намного сложнее, чем кажется
Стандартная библиотека Swift поставляется с тремя основными структурами данных — Array, Dictionary и Set, каждая из которых имеет свой набор оптимизаций, плюсов и минусов.

Подробнее про типы коллекций, можно озанакомиться в данной статье.
https://habr.com/ru/company/otus/blog/468239/
🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
🛠Одним из не то, чтобы новых, но незаменимых классов в UIKit является UISheetPresentationController. Этот класс позволяет легко создать раскрываемый bottom sheet всего с несколькими строками кода.

Если вы не знаете, что такое bottom sheet, откройте встроенное приложение «Карты», чтобы посмотреть. На нем отображается bottom sheet, на котором пользователи могут выполнять поиск и получать доступ к сохраненным местоположениям. Вы можете развернуть и свернуть его. Также этот тип шаблона пользовательского интерфейса можно найти в некоторых популярных приложениях, таких как Google Maps, Twitter и Instagram.

🔴 Теперь к коду.
Вы можете указать размер контроллера, установив свойство detents. Вот пример, показывающий, как установить размер bottom sheet:

let webViewController = WebViewController()
 
if let sheet = webViewController.sheetPresentationController {
    sheet.detents = [ .medium(), .large() ]
}
 
present(webViewController, animated: true)
👍13
Коротенькая, но очень полезная статья с парой фишек для дебага в Xcode 🔨
Тут есть и совсем простые вещи вроде po команды в логе (я удивлён, но очень многие об этом почему-то не знают) и symbolic breakpoint, до более интересных и менее популярных вещей из разряда команды v для того же lldb и изменений при дебаге без необходимости пересобирать проект 🔥
В общем переходите по ссылке и смотрите. Всего несколько минут, зато что-то полезное можно узнать! 👍
https://medium.com/@dbelannab/xcode-debugging-tips-and-tricks-c2f4db49553e
👍5🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Кастомный TabBar

Статья состоит из трёх частей, как реализовать вот такой таббар.

https://betterprogramming.pub/how-to-create-a-nice-uitabbar-for-your-ios-app-using-swift-5-pt-1-f9d2d5450909
🎉42
Про базовые знаниям в Swift, сложно не вспомнить про классы и структуры

Об этом часто спрашивают на собеседованиях и обычно не ограничиваются одним-двумя вопросами.

Давайте разбираться!
Structs vs Classes

https://medium.com/hash-coding/swift-structures-and-classes-part-1-582e26bdf8dd
7
Статические свойства и методы

Кроме свойств, которые относятся к отдельным экземплярам класса, мы можем определять свойства, которые относятся ко всему типу - свойства типа. Для объявления статических методов и свойств типа используется ключевое слово static. Доступ к ним осуществляется из самого типа, а не из экземпляра.
👍9
Работа с навигацией, координатором, передачей данных. Крутая статья с примерами кода

https://www.hackingwithswift.com/articles/175/advanced-coordinator-pattern-tutorial-ios
👍5
Большая и оочень хорошая статья о работе с кастомными шрифтами в iOS

И примеры кода, и результата, и объяснение, как это всё работает, скрины с debug view hierarchy и всё всё всё, что нужно знать 🔥

Статья в первую очередь про поддержку dynamic type - это когда в настройках размер шрифта на уровне всей системы меняют. Но полезно будет всем, кто использует кастомные шрифты

https://medium.com/@hdmdhr/use-dynamic-type-with-custom-fonts-in-ios-480d9c902689
🤯31
Понимаем архитектуру VIPER

VIPER — это архитектура. Она снижает сложность, особенно в больших проектах. Целью архитектуры является разделение операционного кода внутри проекта, модулеризация и регуляризация. В основном она использует протоколы, поскольку межуровневая связь в шаблоне VIPER обеспечивается протоколами.

https://apptractor.ru/develop/ponimaem-arhitekturu-viper.html
🔥72
URLSession - вещь, которую все используют в своих приложениях, но мало кто глубоко копался, что там можно настроить и для чего.

URLSessionConfiguration
https://www.avanderlee.com/swift/urlsessionconfiguration/
🔥11