SwiftUI c нуля: урок 4 - Slider, ObservableObject, Published, Пишем плеер на MVVM

  Рет қаралды 8,442

The Swift Developers

The Swift Developers

4 жыл бұрын

Куда присоединиться:
Внимание более детальные ролики по SwiftUI и Combine я выпускаю теперь на этом ресурсе! - boosty.to/theswiftdevelopers
1.Наше сообщество в вк(более 6 + тыс) = theswiftdevelopers​
2.В телеграмме мы помогаем новичкам и всем желающим (нас больше 3 000 + тыс) - ​t.me/joinchat/Qswat5FErtb3cPfV
p.s
Домашние задание: смотрите в группах!
Если все понравилось ты знаешь что делать;)
Ставь лайк и пиши комент! :)

Пікірлер: 94
@IonWP
@IonWP 3 жыл бұрын
ждем уроки с JSON, server connect, Firestore. Спасибо
@user-px5hi6bf1l
@user-px5hi6bf1l 2 жыл бұрын
Офигенный урок) Создать простейший плеер оказывается можно меньше, чем за 5 мин) Круто, что ты каждую строчку комментируешь - появляется полное понимание
@MindSnapp713
@MindSnapp713 2 жыл бұрын
Евгений, все супер! Продолжайте делать свое дело, благодаря Вам немало разработчиков нашло работу :) Спасибо большое!
@artyom.mihailovich
@artyom.mihailovich 3 жыл бұрын
Самый заботливый и понятный учитель по Swift!!! Спасибо за труды!
@theswiftdevelopers1301
@theswiftdevelopers1301 3 жыл бұрын
Артем Михайлович , почему заботливый?)
@clickFinch
@clickFinch 3 жыл бұрын
@@theswiftdevelopers1301 потому что доходчиво разжевываете для тех кто слабо понимает в логике работы) Более понятных и свежих уроков на русском языке я не видел) Спасибо)
@squirell873
@squirell873 3 жыл бұрын
Отличные уроки, все доступно. Жду продолжения.
@r00t67
@r00t67 2 жыл бұрын
А вот так у нас ползунок ещё и двигаться будет при воспроизведении class PlayerViewModel: ObservableObject { @Published public var maxDuration: Float = 0 @Published public var currentProgress: Float = 0 private var player: AVAudioPlayer? = nil .... public func play() { playSong(name: "hell-march") player?.play() addPeriodicTimeObserver() } public func stop() { player?.stop() timer.invalidate() } .... func addPeriodicTimeObserver() { self.timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true, block: { [weak self] _ in guard let self = self else { return } self.currentProgress = Float(self.player?.currentTime ?? 0) }) } } struct ContentView: View { ... Slider(value: Binding( get: { self.playerViewModel.currentProgress }, set: { newValue in self.currentProgress = newValue self.playerViewModel.setInterval(value: newValue) } ), in: 0...playerViewModel.maxDuration ) .padding() ... }
@Dimonhik5002
@Dimonhik5002 3 жыл бұрын
Только недавно начал изучать Swift и даже я более менее понял что происходит в этом уроке) Прекрасно объясняете!
@theswiftdevelopers1301
@theswiftdevelopers1301 3 жыл бұрын
Дмитрий Владимирович , меня это радует, я очень переживаю что не ясно будет
@simpleswift1232
@simpleswift1232 3 жыл бұрын
Спасибо Евгений, все понятно так что не волнуйтесь, каждый ваш урок 10 из 10, ждем новую часть!
@theswiftdevelopers1301
@theswiftdevelopers1301 3 жыл бұрын
спасибо
@evgenygoncharov7137
@evgenygoncharov7137 3 жыл бұрын
Спасибо за урок! Продолжай в том же духе.
@user-wd7yt8ze7j
@user-wd7yt8ze7j 3 жыл бұрын
Спасибо Вам за уроки! Приятно смотреть и слушать. Едва немного разобрался в UIKit полез в SwiftUI и приуныл. После 4го урока каша в голове обретает более-менее нормальную форму)
@natalliamaroz3852
@natalliamaroz3852 2 жыл бұрын
Спасибо огромное. Все понятно, доступно и увлекательно 🙏.
@sergeylobanov4245
@sergeylobanov4245 2 жыл бұрын
Очень круто заходят ваши уроки) спасибо большое. пришел сюда после UIKita. как по маслу всё. Благодарю
@hryst19
@hryst19 3 жыл бұрын
Евгений , большое спасибо за труд.
@user-nc6fu6sc3q
@user-nc6fu6sc3q 3 жыл бұрын
Отличный урок, спасибо!
@designckinet
@designckinet 2 жыл бұрын
Всё как всегда круто!!! Спасибо
@swiftproger
@swiftproger 3 жыл бұрын
Очень, круто, не останавливайся
@a-a-rogov
@a-a-rogov Жыл бұрын
Спасибо дружище за твою работу! Я полный ноль, только начал учится, и уже достаточно понятно излагаешь. Лайк, подписка, колокольчик 🔔
@77nixter
@77nixter 3 жыл бұрын
Спасибо большое! Теперь хоть стал понимать что делаю 🤣. Доработал с движением ползунка, Супер!
@olegvd7180
@olegvd7180 3 жыл бұрын
Отличное видео!!! Осваиваю SWIFT с нуля по Вашим урокам! Продолжайте, плиз! иначе я останусь недоучкой!!!
@theswiftdevelopers1301
@theswiftdevelopers1301 3 жыл бұрын
понял)
@theswiftdevelopers1301
@theswiftdevelopers1301 3 жыл бұрын
Оставляйте ваше мнение!
@dmitryzhdanov8787
@dmitryzhdanov8787 3 жыл бұрын
За 40 минут HD так и не завезли. Не сдержался и смотрю в 360. Спасибо за урок)
@theswiftdevelopers1301
@theswiftdevelopers1301 3 жыл бұрын
да не видно ничего в 360
@DimNovo
@DimNovo 3 жыл бұрын
😄
@bardakan
@bardakan Жыл бұрын
1)наверное туториал старый - теперь перед запуском плеера еще нужно настроить аудиосессию, иначе проигрывать аудио будет без звука 2)при запущенном плеере swiftui лагает (в том числе у вас). Можете рассказать, как это исправить?
@aslanshidaev2369
@aslanshidaev2369 3 жыл бұрын
спасибо братан за урок.
@klockkrasavec
@klockkrasavec 2 жыл бұрын
спс за уроки до этого проходил по флаттеру, это сильно помогает в понимании
@user-rd9hd6sw5z
@user-rd9hd6sw5z 3 жыл бұрын
заходит, хотим еще)
@user-fg3gy8yl4d
@user-fg3gy8yl4d 3 жыл бұрын
Все очень нравится!
@gimtonic
@gimtonic 3 жыл бұрын
Уроки заходят))
@mariamsargsyan608
@mariamsargsyan608 3 жыл бұрын
Супер!
@papadoster1393
@papadoster1393 3 жыл бұрын
Очень круто! Я новичок, но все очень понятно!)
@alexanderommm
@alexanderommm 2 жыл бұрын
Крутой, канал, жалко, что не попадал сюда раньше)
@user-en2xg6om8x
@user-en2xg6om8x 3 жыл бұрын
Очень хорошие уроки! В дальнейшем, хотелось бы разобрать анимацию, обертки свойств, сетевые данные
@stepanet
@stepanet 3 жыл бұрын
Евгений спасибо за урок. Придумал домашку: 1. при нажатии на кнопку СТОП -> слайдер на 0 2.Реализовать ПАУЗУ, чтобы продолжал с того места, где была нажата пауза.
@sokol_yasnyi
@sokol_yasnyi 9 ай бұрын
Круто!
@reshetn1koff
@reshetn1koff 3 жыл бұрын
P.S. Я новичок и мне все понятно. Очень круто объясняешь.
@slipknot_korn_liver652
@slipknot_korn_liver652 3 жыл бұрын
спасибо большое
@user-in6if3wp8d
@user-in6if3wp8d 2 жыл бұрын
Отличный урок! Я еще в функцию stop добавил сохранениие текущей позиции, чтобы нажимая на плей каждый раз песня не начиналась с начала
@justasid001
@justasid001 3 жыл бұрын
круто, даже удивился что плеер через canvas запустился!
@jojomajo
@jojomajo 2 жыл бұрын
После compose на андроид, Свифт ui заходит на ура
@myga77
@myga77 3 жыл бұрын
снимай дальше пожалуйста, иначе у меня синдром вечного студента, прошел UIkit, уже осваиваю SwiftUI, но опыта коммерческой разработки все еще нет потому что кажется что я много не знаю
@user-lw1lt1nh1c
@user-lw1lt1nh1c 3 жыл бұрын
круто)
@2Gury
@2Gury 3 жыл бұрын
Отличный видеоурок! Можете, пожалуйста, подробнее рассказать про binding и домашку выдавать какую-то конкретную)
@theswiftdevelopers1301
@theswiftdevelopers1301 3 жыл бұрын
GuryGury , домашку можно взять от uikit
@hakobjanyan
@hakobjanyan Жыл бұрын
тяжелоо, Комент для обр.связы. Спасибо за труд. А вот UIKit мне больше нравится.
@dmitrykhymych3910
@dmitrykhymych3910 3 жыл бұрын
super
@YoungDeveloper
@YoungDeveloper 3 жыл бұрын
Супер, просто не переходи так быстро к реализации.Я думаю новички должны понимать layout для чего нужен geometry reader как высовлять высоту, как измерять размер экрана.А так ты супер все четко объяснил. Делай по много уроков так интересней
@stanislavsky85
@stanislavsky85 3 жыл бұрын
Набирал своими руками.Ни черта не понятно,но очень интересно.Кнопка стоп не работает.В симуляторе вообще не работает.Только в канвасе.И в конце занятия желательно весь код прокрутить сверху вниз.
@Weweewewewww
@Weweewewewww 2 жыл бұрын
ой спасибо
@user-dw7ng3oz4e
@user-dw7ng3oz4e 3 жыл бұрын
Евгений!! вернитесь пожалуйста! Вы нам нужны!
@g01dt00th
@g01dt00th 3 жыл бұрын
Color.white и т.п. в 99% случаев можно не писать, достаточно .white Расскажите общественности про @Environment(\.colorScheme) var colorSheme var body: some View { Text(colorScheme == .dark ? "Темная тема" : " Светлая тема") .foregroundColor(colorScheme == .light ? .secondary : .primary) } Чтобы сразу возникло понимание, что SwiftUI способен сам все правильно перекрашивать в зависимости от системные настроек темы ;)
@user-ry3tu8rq8s
@user-ry3tu8rq8s 2 жыл бұрын
good
@user-tz8zk8hz3z
@user-tz8zk8hz3z 9 ай бұрын
👍
@clickFinch
@clickFinch 3 жыл бұрын
Вопрос: Почему именно Published? Почему не State к примеру?
@theswiftdevelopers1301
@theswiftdevelopers1301 2 жыл бұрын
Куда присоединиться: Внимание более детальные ролики по SwiftUI и Combine я выпускаю теперь на этом ресурсе! - boosty.to/theswiftdevelopers 1.Наше сообщество в вк(более 6 + тыс) = vk.com/theswiftdevelopers​ 2.В телеграмме мы помогаем новичкам и всем желающим (нас больше 3 000 + тыс) - ​t.me/joinchat/Qswat5FErtb3cPfV p.s Домашние задание: смотрите в группах! Если все понравилось ты знаешь что делать;) Ставь лайк и пиши комент! :)
@denisk3852
@denisk3852 3 жыл бұрын
Всё ок. Кому не понятно - пересмотреть и почитать доки 🙂
@ZDREXINC
@ZDREXINC 3 жыл бұрын
newValue in - какая то не привычная конструкция, понятно что в нее передается значение позиции, но как? Ожидал увидеть что-то вроде - set(newValue): { self.progress = Float(newValue) } или set: { newValue = slider.current.val; self.progress = Float(newValue) }
@romanbutler156
@romanbutler156 6 ай бұрын
Спасибо большое! Полезно. Но верстка на swiftUI ужасная, просто венигрет какой то, особенно после флатера
@hryst19
@hryst19 3 жыл бұрын
У меня вопрос: сделал все как в уроке , но песня не проигрывается при тесте? Что может быть ?
@IonWP
@IonWP 3 жыл бұрын
Круто очень но - было б еще круто сделать так - Этот slider должен двигаться одновременно с музыкой при этом и юзер чтобы смот перематать. И чтобы и время показывало но все вкусы каждого- каждый делает как хочет - импровизация
@theswiftdevelopers1301
@theswiftdevelopers1301 3 жыл бұрын
Ciobanasu Ion , ну вы можете в качестве практики доделать это
@IonWP
@IonWP 3 жыл бұрын
@@theswiftdevelopers1301 Конечно так и написал - - каждый делает как хочет - импровизация. Вот это и будет домашняя задания. Спасибо
@denisk3852
@denisk3852 3 жыл бұрын
SwiftUI похож на HTML. Пришедшим из веба должно быть легко 😉
@ZDREXINC
@ZDREXINC 3 жыл бұрын
Очень натянутое утверждение, не могу сказать что легко
@VladimirKim-cl3rh
@VladimirKim-cl3rh Жыл бұрын
только при стопе прогресс сбрасывается, и стартует заново
@reshetn1koff
@reshetn1koff 3 жыл бұрын
Спасибо за урок. Подскажи пожалуйста, как ты делаешь отступы для выделенного кода?
@theswiftdevelopers1301
@theswiftdevelopers1301 3 жыл бұрын
cmd+ i
@reshetn1koff
@reshetn1koff 3 жыл бұрын
@@theswiftdevelopers1301 спасибо, сработало! только control + I :) на cmd + I открывался Profile
@theswiftdevelopers1301
@theswiftdevelopers1301 3 жыл бұрын
Алексей Решетников , у меня руки помнят сорян)
@stepanet
@stepanet 3 жыл бұрын
Евгений, подскажите, как в Text вывести текущий прогресс песни и обновлять его постоянно?
@theswiftdevelopers1301
@theswiftdevelopers1301 3 жыл бұрын
Malen Kihren , подумайте может через таймер делать проверку каждую секунду?
@stepanet
@stepanet 3 жыл бұрын
@@theswiftdevelopers1301 получилось, спасибо. теперь надо прогресс в нормальный вид преобразовать min:sec
@stepanet
@stepanet 3 жыл бұрын
@@theswiftdevelopers1301 а слайдер должен двигаться когда песня идет?
@theswiftdevelopers1301
@theswiftdevelopers1301 3 жыл бұрын
конечно
@sergeirodin7847
@sergeirodin7847 3 жыл бұрын
Стоит новичку начинать с SwiftUI или лучше сначала изучить UIKIt?
@theswiftdevelopers1301
@theswiftdevelopers1301 3 жыл бұрын
Sergei Rodin сначала UIKIt
@sergeirodin7847
@sergeirodin7847 3 жыл бұрын
@@theswiftdevelopers1301 спасибо за ответ!
@MrMarguliz
@MrMarguliz 3 жыл бұрын
Интересует также реализация обмена данными между окнами апки.
@theswiftdevelopers1301
@theswiftdevelopers1301 3 жыл бұрын
Marguliz , какими окнами?
@MrMarguliz
@MrMarguliz 3 жыл бұрын
The Swift Developers Имел ввиду Controllers.
@theswiftdevelopers1301
@theswiftdevelopers1301 3 жыл бұрын
Marguliz , тут нет контролеров больше
@MrMarguliz
@MrMarguliz 3 жыл бұрын
The Swift Developers, 😟.
@amika8828
@amika8828 3 жыл бұрын
Какими клавишами ты выравниваешь код?
@alexis_swift
@alexis_swift 3 жыл бұрын
cntl + i
@amika8828
@amika8828 3 жыл бұрын
@@alexis_swift спс
@re-mont1apple617
@re-mont1apple617 3 жыл бұрын
все сделал без observable,published, observed не понимаю зачем они здесь нужны (я без критики, просто если я не понимаю будьте добры кто-нибудь обьясните), у меня без этого все получилось
@8kbit503
@8kbit503 3 жыл бұрын
У вас получилось потомучто модель была структура, замените ее на класс и работать без них не будет
@slipknot_korn_liver652
@slipknot_korn_liver652 3 жыл бұрын
после последних изменений ползунок не ходит вообще
@user-hb4vr5gq4u
@user-hb4vr5gq4u 2 ай бұрын
Спасибо. Падение на try player = AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath)) log SliderSwiftUI[59178:5624433] Problem scanning for packets SliderSwiftUI[59178:5624433] MPEGAudioFile::OpenFromDataSource failed SliderSwiftUI[59178:5624433] OpenFromDataSource failed SliderSwiftUI[59178:5624433] Open failed The operation couldn’t be completed. (OSStatus error 1685348671.)
Alex hid in the closet #shorts
00:14
Mihdens
Рет қаралды 18 МЛН
ЧУТЬ НЕ УТОНУЛ #shorts
00:27
Паша Осадчий
Рет қаралды 10 МЛН
Опасность фирменной зарядки Apple
00:57
SuperCrastan
Рет қаралды 12 МЛН
Secret Experiment Toothpaste Pt.4 😱 #shorts
00:35
Mr DegrEE
Рет қаралды 38 МЛН
SwiftUI c нуля: урок 1 - Alert & ActionSheet, переход с UIKit
22:03
Online Shop / Firebase / SwiftUI / MVVM / Урок 3
27:26
iOS Bulgakov
Рет қаралды 196
MVVM + Data Driven UI на практике swift
40:22
The Swift Developers
Рет қаралды 21 М.
Изучение Swift в одном видео уроке за час!
59:33
Гоша Дударь
Рет қаралды 230 М.
Alex hid in the closet #shorts
00:14
Mihdens
Рет қаралды 18 МЛН