ErrorNil. iOS-разработка
Делаем?
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Passcode экран на SwiftUI с Face ID и Keychain — пишем с нуля
В этом видео собираем с нуля экран пасскода на SwiftUI.
Что реализуем:
— Регистрация 4-значного кода с подтверждением
— Хранение пасскода в Keychain (безопасно, на устройстве)
— Авторизация через Face ID при каждом входе
— Fallback на пасскод, если Face…
Что реализуем:
— Регистрация 4-значного кода с подтверждением
— Хранение пасскода в Keychain (безопасно, на устройстве)
— Авторизация через Face ID при каждом входе
— Fallback на пасскод, если Face…
❤9🔥6💯2
Мой App Store 🔥
Какие то приложения полезные, какие-то по приколу, но все рабочие
И при том что 3 приложения только за этот год, если в этот месяц релизну еще одно приложение (а уже есть идея), то получится по проекту за кажды месяц))
И это одна из причин, почему я люблю разработку, можно превратить любую задумку в реальность, всего лишь написав правильный код!
Какие то приложения полезные, какие-то по приколу, но все рабочие
И при том что 3 приложения только за этот год, если в этот месяц релизну еще одно приложение (а уже есть идея), то получится по проекту за кажды месяц))
И это одна из причин, почему я люблю разработку, можно превратить любую задумку в реальность, всего лишь написав правильный код!
👍13🔥11❤4
Кстати последний проект, сделал между делом для знакомого хирурга, учет своих пациентов, может кому тоже пригодится, все бесплатно
🔥9👍2
Если такая тема зайдет, собирать проекты за короткое время, то буду чаще писать такое
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Пишем iOS приложение за 26 минут
В этом видео я с нуля за 26 минут собираю приложение на SwiftUI, которое показывает случайные исторические события.
📱 Что будет в видео:
• SwiftUI с нуля
• Простая архитектура
• Работа с UI
• Генерация случайных данных
• Быстрая сборка рабочего приложения…
📱 Что будет в видео:
• SwiftUI с нуля
• Простая архитектура
• Работа с UI
• Генерация случайных данных
• Быстрая сборка рабочего приложения…
🔥15🎉6❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
SwiftUI. Работа с Камерой и с Фильтрами
В этом видео я с нуля создаю iOS приложение с камерой и фильтрами всего за 80 минут.
Что внутри:
– работа с камерой
– применение фильтров через Core Image
– сохранение в галерею
Список фильтров - https://developer.apple.com/library/archive/documentat…
Что внутри:
– работа с камерой
– применение фильтров через Core Image
– сохранение в галерею
Список фильтров - https://developer.apple.com/library/archive/documentat…
🔥15❤3⚡2
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Создаем AI-приложение: генерация изображений + работа с Base64
В этом видео пишем полноценное приложение для генерации изображений с помощью ИИ. Покажу процесс разработки шаг за шагом: подключение API, получение изображения в формате Base64, преобразование строки в реальную картинку и сохранение результата.
Разберем…
Разберем…
🔥12❤2👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
СОБИРАЕМ ГОТОВЫЙ QR-Сканер за (почти) 2 ЧАСА. SwiftUI. AVFoundation
Сегодня собираем полноценный QR-сканер на SwiftUI всего за 2 часа! Покажу весь процесс разработки: интерфейс, подключение камеры, сканирование QR-кодов и запуск готового приложения. Отличный проект для тех, кто изучает iOS-разработку и SwiftUI.
https://platforma.error…
https://platforma.error…
1🔥12❤2👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
5 ПОЛЕЗНЫХ ЛАЙФХАКА ДЛЯ ТВОЕГО XCODE
В этом видео расскажу, как настроить xcode, что бы работать с комфортом.
Подробнее в тг https://t.me/error_nil
Собственная шапка:
Путь - ~/Library/Developer/Xcode/UserData/
Название файла - IDETemplateMacros.plist
Собственный шаблон
Путь - ~/Library…
Подробнее в тг https://t.me/error_nil
Собственная шапка:
Путь - ~/Library/Developer/Xcode/UserData/
Название файла - IDETemplateMacros.plist
Собственный шаблон
Путь - ~/Library…
❤9🔥4💯3
1. Создание своего шаблона
Перейти в директорию
Затем создать новый путь
И внутри создать папку
Внутри этой папки создать два файла:
- ___FILEBASENAME___.swift и добавить нужный код, к примеру:
- TemplateInfo.plist
2 - Своя шапка для всех файлов
- Перейти в директорию
- Создать файл IDETemplateMacros.plist
- Добавить содержимое
-
Перейти в директорию
~/Library/Developer/Xcode
Затем создать новый путь
/Templates/File Templates/Custom/
И внутри создать папку
CleanViewController.xctemplate
где CleanViewController любое название
Внутри этой папки создать два файла:
- ___FILEBASENAME___.swift и добавить нужный код, к примеру:
final class ___FILEBASENAME___: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
- TemplateInfo.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Description</key>
<string>Clean UIViewController</string>
<key>Kind</key>
<string>Xcode.IDEFoundation.TextSubstitutionFileTemplateKind</string>
<key>MainTemplateFile</key>
<string>___FILEBASENAME___.swift</string>
<key>Platforms</key>
<array>
<string>com.apple.platform.iphoneos</string>
</array>
</dict>
</plist>
2 - Своя шапка для всех файлов
- Перейти в директорию
~/Library/Developer/Xcode/UserData/
- Создать файл IDETemplateMacros.plist
- Добавить содержимое
-
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://apple.com">
<plist version="1.0">
<dict>
<key>FILEHEADER</key>
<string>Любой текст</string>
</dict>
</plist>
Доступные константы
___DATE___ — Текущая дата (например, 20.05.2024).
___YEAR___ — Текущий год.
___ORGANIZATIONNAME___ — Название организации (указано в настройках проекта).
___FILENAME___ — Имя создаваемого файла.
___USERNAME___ — Имя пользователя Mac.
🔥10❤6
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
SwiftData + iCloud. Синхронизация между вашими устройствами
https://platforma.error-nil.ru/ - Научиться самостоятельно создавать приложения с полной поддержкой от ментора
В этом видео разберем, как сделать синхронизацию данных через iCloud для SwiftData в SwiftUI-приложении 📱☁️
Пошагово сделаем:
• подключение iCloud…
В этом видео разберем, как сделать синхронизацию данных через iCloud для SwiftData в SwiftUI-приложении 📱☁️
Пошагово сделаем:
• подключение iCloud…
👍7🔥6❤3
Media is too big
VIEW IN TELEGRAM
Смысла мало, зато бесплатно)
Полноценный локальный, БЕСПЛАТНЫЙ LLM.
Редкий кейс, но под определенные задачи все равно можно использовать, к примеру, при разработке, чтобы проверить конечную интеграцию с OpenAI API и не тратить токены
Полноценный локальный, БЕСПЛАТНЫЙ LLM.
Редкий кейс, но под определенные задачи все равно можно использовать, к примеру, при разработке, чтобы проверить конечную интеграцию с OpenAI API и не тратить токены
⚡8❤3👍3🔥1💯1
В этот раз приложения со списком покупок.
По традиции анонс и в дальнейшем этапы разработки будут выходить на канале, можно поддержать одним лайком 👍
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
ShopList — Анонс iOS-приложения для покупок на SwiftUI
https://platforma.error-nil.ru/ - обучающая платфора
В этом видео посмотрим на новый iOS-проект — ShopList
Это минималистичное приложение для списка покупок, созданное с использованием SwiftUI.
Разберем:
• дизайн приложения
• основные экраны
• поиск и…
В этом видео посмотрим на новый iOS-проект — ShopList
Это минималистичное приложение для списка покупок, созданное с использованием SwiftUI.
Разберем:
• дизайн приложения
• основные экраны
• поиск и…
👍15❤7⚡2💯2🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
ShopList — Разработка приложения на SwiftUI. Часть 1
https://platforma.error-nil.ru/ - обучающая платфора
Часть 1 - https://youtu.be/y4QOey340IE
Часть 2 - https://youtu.be/M1Y6kCbPooQ
Часть 3 - https://youtu.be/xQWXCy_kPzw
Часть 4 - https://youtu.be/Dxx96G_W4wo
В этом видео верстаем главный экран приложения…
Часть 1 - https://youtu.be/y4QOey340IE
Часть 2 - https://youtu.be/M1Y6kCbPooQ
Часть 3 - https://youtu.be/xQWXCy_kPzw
Часть 4 - https://youtu.be/Dxx96G_W4wo
В этом видео верстаем главный экран приложения…
❤9👍6
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
#2 ShopList — Разработка приложения на SwiftUI. Список покупок
https://platforma.error-nil.ru/ - обучающая платфора
Часть 1 - https://youtu.be/y4QOey340IE
Часть 2 - https://youtu.be/M1Y6kCbPooQ
Часть 3 - https://youtu.be/xQWXCy_kPzw
Часть 4 - https://youtu.be/Dxx96G_W4wo
_____________________________________
Полезные…
Часть 1 - https://youtu.be/y4QOey340IE
Часть 2 - https://youtu.be/M1Y6kCbPooQ
Часть 3 - https://youtu.be/xQWXCy_kPzw
Часть 4 - https://youtu.be/Dxx96G_W4wo
_____________________________________
Полезные…
❤11
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
#4 ShopList — Разработка приложения на SwiftUI. Экран добавления товаров
https://platforma.error-nil.ru/ - обучающая платфора
Часть 1 - https://youtu.be/y4QOey340IE
Часть 2 - https://youtu.be/M1Y6kCbPooQ
Часть 3 - https://youtu.be/xQWXCy_kPzw
Часть 4 - https://youtu.be/Dxx96G_W4wo
Figma - https://www.figma.com/design/0LQ3m…
Часть 1 - https://youtu.be/y4QOey340IE
Часть 2 - https://youtu.be/M1Y6kCbPooQ
Часть 3 - https://youtu.be/xQWXCy_kPzw
Часть 4 - https://youtu.be/Dxx96G_W4wo
Figma - https://www.figma.com/design/0LQ3m…
❤4
И код для кастомного Layout из видео
struct FlowLayout: Layout {
var spacing: CGFloat = 12
func sizeThatFits(proposal: ProposedViewSize, subviews: Subviews, cache: inout ()) -> CGSize {
let maxWidth = proposal.width ?? .infinity
var rowWidth: CGFloat = 0
var rowHeight: CGFloat = 0
var totalHeight: CGFloat = 0
for subview in subviews {
let size = subview.sizeThatFits(.unspecified)
if rowWidth + size.width > maxWidth, rowWidth > 0 {
totalHeight += rowHeight + spacing
rowWidth = size.width + spacing
rowHeight = size.height
} else {
rowWidth += size.width + spacing
rowHeight = max(rowHeight, size.height)
}
}
totalHeight += rowHeight
return CGSize(width: maxWidth, height: totalHeight)
}
func placeSubviews(in bounds: CGRect, proposal: ProposedViewSize, subviews: Subviews, cache: inout ()) {
var x = bounds.minX
var y = bounds.minY
var rowHeight: CGFloat = 0
for subview in subviews {
let size = subview.sizeThatFits(.unspecified)
if x + size.width > bounds.maxX, x > bounds.minX {
x = bounds.minX
y += rowHeight + spacing
rowHeight = 0
}
subview.place(at: CGPoint(x: x, y: y),
anchor: .topLeading,
proposal: ProposedViewSize(size))
x += size.width + spacing
rowHeight = max(rowHeight, size.height)
}
}
}
❤7