Проект 5
Игра Word Scramble, где пользователю предлагается составить слова из случайно выбранного слова. Например: для слова человек подходят варианты, чело, век, вол, волк и так далее
Темы
🟢 List как элемент SwiftUI, позволяющий отображать список View
🟢
🟢
🟢
Применяется оно так:
Выглядит, конечно, так себе. Но подозреваю я ещё увижу немало подобного кода, из-за поддержки
🟢 Подгрузка файлов из
🟢 Бонусом было добавление элемента в список (List) используя анимацию
#hackingwithswift обещает, что это был послендний “простой” проект, но меня после ML будет сложно удивить😎
Игра Word Scramble, где пользователю предлагается составить слова из случайно выбранного слова. Например: для слова человек подходят варианты, чело, век, вол, волк и так далее
Темы
onAppear
- действие, которое выполняется при показе View. Пока не знаю как оно реагирует на изменение View.fatalError
- возможность закрашить приложение при неразрешимой ситуацииUITextChecker
- проверка слова на корректность в смысле правописания. Применяется оно так:
func isReal(word: String) -> Bool {
let checker = UITextChecker()
let range = NSRange(location: 0, length: word.utf16.count)
let misspelledRange = checker.rangeOfMisspelledWord(in: word, range: range, startingAt: 0, wrap: false, language: "en")
return misspelledRange.location == NSNotFound
}
Выглядит, конечно, так себе. Но подозреваю я ещё увижу немало подобного кода, из-за поддержки
Objective-C
Bundle
#hackingwithswift обещает, что это был послендний “простой” проект, но меня после ML будет сложно удивить
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Оказывается, что в 👶 добавит её за нас. Пишем просто пустые
alert
необязательно добавлять кнопку Ok, SwiftUI {}
.alert(errorTitle, isPresented: $showingError) { } message: {
Text(errorMessage)
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Выходные не проходят зря и сегодня я знакомлюсь с анимацией 👋
Удивляет с какой простотой достигаются красивые эффекты. Напоиманает чем-то css👩💻
Кто у кого списывал?🤔
struct ContentView: View {
@State private var animationAmount = 1.0
var body: some View {
Button("Tap Me") {
}
.padding(50)
.foregroundStyle(.white)
.background(Color.blue)
.clipShape(.circle)
.overlay {
Circle()
.stroke(.black)
.scaleEffect(animationAmount)
.opacity(2 - animationAmount)
.animation(.easeInOut(duration: 1).repeatForever(autoreverses: false), value: animationAmount)
}
.onAppear {
animationAmount = 2
}
}
}
Удивляет с какой простотой достигаются красивые эффекты. Напоиманает чем-то css
Кто у кого списывал?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
А вот анимирование биндингов (bindings) взрывает мой проц 🤯
Как утверждает автор, такую анимацию можно сделать и для Boolean значений.
Stepper("Scale amount", value: $animationAmount.animation(
.easeInOut(duration: 1)
.repeatCount(3, autoreverses: true)
), in: 1...10)
Как утверждает автор, такую анимацию можно сделать и для Boolean значений.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Давайте посмотрим как оно работает с Boolean
struct ContentView: View {
@State private var isOn = false
var body: some View {
VStack {
Toggle(isOn: $isOn.animation(.easeInOut(duration: 0.5))) {
Label {
Text("Show Button")
} icon: {}
}
.padding()
Button("Circle Button") {
}
.padding(50)
.foregroundStyle(.white)
.background(Color.blue)
.clipShape(.circle)
.opacity(isOn ? 1 : 0)
}
}
}
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Кто-нибудь расскажите мне как это работает… как кнопка рисуется анимировано?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Извините, но похоже еще один пост сегодня будет ☺️
Я не мог не закончить Проект 6 сегодня
Челлендж состоит в том, что нужно прикрутить анимацию к сделанному ранее приложению Guess Flag
Я не мог не закончить Проект 6 сегодня
Челлендж состоит в том, что нужно прикрутить анимацию к сделанному ранее приложению Guess Flag
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
Всем привет 👋
Сегодня нужно было самостоятельно сделать тренажёр для таблицы умножения.
Выбираете лимит для множителей и количество вопросов, затем предоставляется 3 варианта, где только 1 верный
В UI/UX я пока совсем мало что понимаю, и то, что хочется сделать - не получается
Задумка была похожая, но намного красивее.
Чувствую ограничение в доступных мне инструментах, и трудности настройки стилей 😕
Сегодня нужно было самостоятельно сделать тренажёр для таблицы умножения.
Выбираете лимит для множителей и количество вопросов, затем предоставляется 3 варианта, где только 1 верный
В UI/UX я пока совсем мало что понимаю, и то, что хочется сделать - не получается
Задумка была похожая, но намного красивее.
Чувствую ограничение в доступных мне инструментах, и трудности настройки стилей 😕
👍1🤔1
Я не мог нормально спать после такого разочарования, зато теперь я больше знаю про позиционирование View!
К тому же, освоил создание переиспользуемых View, где параметры передаются через
А еще я научился настраивать цвета в Assets💪
🔥 новый дизайн значительно лучше
👍 до этого тоже было нормально
К тому же, освоил создание переиспользуемых View, где параметры передаются через
@Binding
, что позволяет динамически изменять переданные значения.А еще я научился настраивать цвета в Assets
🔥 новый дизайн значительно лучше
👍 до этого тоже было нормально
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Бегло прочитал эту книгу т.к. большая часть тем мне известна, но что-то удалось оттуда подчерпнуть.
Основная претензия к оформлению листингов, тут это просто текст. Воспринимать их сложнее.
В целом книга больше похожа на справочник, а не учебное пособие, несмотря на наличие комментариев от автора. Заданий я тоже не нашел.
Есть и вторая книга, но она не входит в подписку, а покупать желания нет 😁, тем более она про UIKit, до которого я еще не дорос.
Буду продолжать курс hackingwithswift
Основная претензия к оформлению листингов, тут это просто текст. Воспринимать их сложнее.
В целом книга больше похожа на справочник, а не учебное пособие, несмотря на наличие комментариев от автора. Заданий я тоже не нашел.
Есть и вторая книга, но она не входит в подписку, а покупать желания нет 😁, тем более она про UIKit, до которого я еще не дорос.
Буду продолжать курс hackingwithswift
👍2👀1
Проект 7: Трекер расходов, разделенных на 2 типа: личные и бизнес
Day 36
🟢
Попробовал тут разобраться с внутренностью, пока всё сложно, есть какой-то
🟢 Решить проблему выше помогает
🟢
🟢
Day 37
В этом уроке мы применяли знания из предыдущего урока, чтобы наконец реализовать приложение
Дальше будет тест по материалу и челенж 🤘
#hackingwithswift
Day 36
@State
и class
по-умолчанию не работают вместе! @State
перестаёт замечать изменения меняются свойства, а не объект целиком.Попробовал тут разобраться с внутренностью, пока всё сложно, есть какой-то
StateStorage
, но в исходниках нет реализации… Это что-то абсолютно новое для меня. Очень хочу в этом разобраться #todo@Observable
, но ставится он над определением класса, и называется Макрос. @State
является Property Wrapper. В Kotlin и то, и другое называется Аннотация и обозначает одно и то же. В Swift по-другому.sheet
- окно, которое по своему функционалу больше похоже на модальное окно, но может содержать любой? контент. Опять же, непривычно, что показ окна основан на флаге, а не на событии/вызове функцииCodable
- инструмент сериализации/десериализации, но в текущей задаче его применение очень ограничено, и я не смог оценить его хоть в какой-то мереDay 37
В этом уроке мы применяли знания из предыдущего урока, чтобы наконец реализовать приложение
Дальше будет тест по материалу и челенж 🤘
#hackingwithswift
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🆒1
И да, мне интересно получить обратную связь, ведь мы вместе уже больше трети 100 Days марафона! Дайте обратную связь 🙏
Anonymous Poll
78%
Всё круто, продолжай 💪
0%
Бросай это дело 🤮
22%
Нормально… 🫠
Результат челенжа!
Попытался решить задачу без подглядывания в пройденный материал, пока не получается. Иногда даже простые вещи требуют гугления. Но я уверен, что скоро работа с элементарными компонентами будет для меня привычна и не вызывать вопросов🤞
В этом приложении пришлось разделить список трат на 2, т.к. удаление работает через
Начинаем следить за тратами?
Попытался решить задачу без подглядывания в пройденный материал, пока не получается. Иногда даже простые вещи требуют гугления. Но я уверен, что скоро работа с элементарными компонентами будет для меня привычна и не вызывать вопросов
В этом приложении пришлось разделить список трат на 2, т.к. удаление работает через
IndexSet
, который, как я понимаю, соответсвует индексам из ForEach
. Они в свою очередь должны соответствовать индексам массива из которого мы удаляем элементы. Таким образом общий список обрабатывать сложнее, проще разделить!Начинаем следить за тратами?
Please open Telegram to view this post
VIEW IN TELEGRAM
Когда я решил изучить Swift & SwiftUI, я и не предполагал, что это будет отличной возможностью попробовать не только новые технологии, но и техники, о которых я многое слышал, но так и не решался применить в работе.
Уже 5 учебных дней я пытаюсь дробить обучение на 25 минутные интервалы, используя технику Помодорро 🍅
25 минутный интервал требует полной концентрации, но достигается это пока с трудом. Несмотря на это, бывает порой трудно прерваться, но делать это всё же приходится.
5 минутные интервалы отдыха я использую более эффективно, т.к. в это время я должен себя чем-то занять. Поэтому я либо пью воду, либо разминаюсь, отжимаюсь, или просто хожу.
До 30 минутного перерыва дело либо не доходило, либо на нем всё и заканчивалось😃
В дальнейшем, когда мы доберемся до тестирования, я хочу попробовать TDD (Test Driven Development). Надеюсь, эта практика хорошо подходит для UI приложений, таких как SwiftUI.
Если использовали Помодорро, поделитесь своим опытом☺️
Уже 5 учебных дней я пытаюсь дробить обучение на 25 минутные интервалы, используя технику Помодорро 🍅
25 минутный интервал требует полной концентрации, но достигается это пока с трудом. Несмотря на это, бывает порой трудно прерваться, но делать это всё же приходится.
5 минутные интервалы отдыха я использую более эффективно, т.к. в это время я должен себя чем-то занять. Поэтому я либо пью воду, либо разминаюсь, отжимаюсь, или просто хожу.
До 30 минутного перерыва дело либо не доходило, либо на нем всё и заканчивалось
В дальнейшем, когда мы доберемся до тестирования, я хочу попробовать TDD (Test Driven Development). Надеюсь, эта практика хорошо подходит для UI приложений, таких как SwiftUI.
Если использовали Помодорро, поделитесь своим опытом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👏1