I greatly appreciate how you build up to the extension and include self in the extension func for explanation before simplifying it. Helps understand what the language itself is doing so much more than if you just imediantely went to the final code
This is so helpful! I've seen tutorials on creating Custom TextField Styles using much harder codes, but instead I could have just used this! I also am able to create the same modifier for TextEditor where the TextField Styles don't apply. I am so happy I came across your channel from a random recommendation online =] Liked and Subbed!
I am new to programming, especially with swift, but this was a very interesting and helpful topic as it better explains what swiftUI is going. I don’t think the topic was covered quite this deep, but this video plus the one covering view builders helped me understand a lot of what swiftUI is doing for us in the background. For instance, all modifiers are just functions that take in some parameter and return said modified view. And for the viewbuider video, I can now better grasp why so much of SwiftUI containers that hold views are just view builders. I’m not sure if that’s a perfect way to describe these concepts, but that’s sort of what I took away from them.
Hi Nick, Great that you’re back. Really looking forward to this series. Quick question - why do we use the ViewModifier vs just write an extension on View - much like you have done, but with the modifiers we want there?
Hey Philip! Honestly, that is a great question and I'm not really sure. But I do know that Apple's documentation says to do it with custom ViewModifiers. Maybe there's performance benefits?
@@SwiftfulThinking Just writing an extension on a view depends on using existing modifiers. Thus you still need the method that applies your modifications at the end of the day somewhere. This method needs a consistent interface that is reusable hence the protocol with the object you pass in.
Hello Dear Nick Sir, please make your SwiftUI Videos 4K resolution. They are more pleasing to the eyes in the 4K displays. Besides, your contents are really helpful and so are your courses. Thank You
You can't do this directly with an Image because by protocol definition ViewModifier has to be applicable to any View. However, you can create extensions of Image directly, something like: extension Image { func myModifier() -> some View { self .resizable() } }
I assume you can just skip creating the func version and just go with the extension alone (e.g. move the modifiers form the function into the extension).
Hi Nick, I'm an avid follower of viewing your SwiftUI tutorials. I'm a beginner and I'm moving on to watching your tutorials for me to learn as much as I could. When you have the chance, could you make one tutorial of a Mask ViewModifier wherein hundreds of small pieces of Rectangle-shapes acting as masks to dissolve any Image or Shapes? Thank you very much for your time and to all your video tutorials!
@@SwiftfulThinking I'll check that out and see how I could implement those techniques you've presented in that Mask tutorial, to the View that I had in mind. Thanks!
@@SwiftfulThinking Hi Nick, I know that creating a ViewModifier requires a function or method in it --- func body (content: Content) --> some View. Can I embed another function/method within this? If yes, please show me how. I'll appreciate so much your response. Thanks!
Honestly, unwatchably slow. "Advanced learning", spending more than four minutes on creating a new project, then spend five minutes explaining why it's a bad idea to copy and paste the same code over and over. This video should have started at 9:15 and ended at 9:30, skipped to 12:30, then just end at 13:00. Nothing before or after that had any value whatsoever and was 100% a waste of time. Also, no need to remove the font, just override it by putting it after the modifier if necessary. This video being 19 minutes was a robbery of time, yours and ours.
I greatly appreciate how you build up to the extension and include self in the extension func for explanation before simplifying it. Helps understand what the language itself is doing so much more than if you just imediantely went to the final code
I am learning swiftUI by watching your all bootcamps, Every single video is very very useful👍, Thanks for covering all points.
Thanks for watching 😁
Great start here! You also always pick the perfect music for your videos. Thanks!
Thank you for covering this. Even if I’ve used them before, I like your style and always learn something new.
Glad you're back Nick. Good start to a new series!
🥳
Best series on SwiftUI hands down
This is so helpful! I've seen tutorials on creating Custom TextField Styles using much harder codes, but instead I could have just used this! I also am able to create the same modifier for TextEditor where the TextField Styles don't apply. I am so happy I came across your channel from a random recommendation online =] Liked and Subbed!
I am new to programming, especially with swift, but this was a very interesting and helpful topic as it better explains what swiftUI is going. I don’t think the topic was covered quite this deep, but this video plus the one covering view builders helped me understand a lot of what swiftUI is doing for us in the background.
For instance, all modifiers are just functions that take in some parameter and return said modified view. And for the viewbuider video, I can now better grasp why so much of SwiftUI containers that hold views are just view builders.
I’m not sure if that’s a perfect way to describe these concepts, but that’s sort of what I took away from them.
Amazing feature, super simple and reusable. Will definitely use it in my apps.
Hi Nick, you are awesome, Your teaching is amazing
I have been waiting for this video... thanks boss
Thanks for watching Abdul!
Great video, thank you. I moved the ViewModifier struct to its own Swift file - works like a charm and shortens the View code.
It may simple but it sure is powerful!
Good stuff!
Nick you are the best ♥️
another awesome video ..
Although I already know how to create custom View modifiers. Still, I'm very eager to see how you presenting this
Haha hope you liked it. I hope some of the next videos will be more helpful lol
Hi Nick, Great that you’re back. Really looking forward to this series. Quick question - why do we use the ViewModifier vs just write an extension on View - much like you have done, but with the modifiers we want there?
Hey Philip! Honestly, that is a great question and I'm not really sure. But I do know that Apple's documentation says to do it with custom ViewModifiers. Maybe there's performance benefits?
@@SwiftfulThinking Just writing an extension on a view depends on using existing modifiers. Thus you still need the method that applies your modifications at the end of the day somewhere. This method needs a consistent interface that is reusable hence the protocol with the object you pass in.
Hello Dear Nick Sir, please make your SwiftUI Videos 4K resolution. They are more pleasing to the eyes in the 4K displays. Besides, your contents are really helpful and so are your courses. Thank You
I thought these were uploading 4K 😭 I'm going to figure this out, sorry!
Awesome video! Thank you so much 🙏
any idea how to do this with Images? I kept getting weird stuff like this "Instance member 'resizable' cannot be used on type 'Image' "
You can't do this directly with an Image because by protocol definition ViewModifier has to be applicable to any View. However, you can create extensions of Image directly, something like:
extension Image {
func myModifier() -> some View {
self
.resizable()
}
}
Thank you so much bro) explained cool
Good video, thanks!
Nick, why use the extension while the custom modifier always do the same thing 🤔? thank you,
I believe it is so you can get rid of having to use .modifier and passing in the func. Instead you can just call the extensions function.
I assume you can just skip creating the func version and just go with the extension alone (e.g. move the modifiers form the function into the extension).
The video is great🥳
Thank you 🥳
great video!
Thanks!
Hi Nick, I'm an avid follower of viewing your SwiftUI tutorials. I'm a beginner and I'm moving on to watching your tutorials for me to learn as much as I could. When you have the chance, could you make one tutorial of a Mask ViewModifier wherein hundreds of small pieces of Rectangle-shapes acting as masks to dissolve any Image or Shapes? Thank you very much for your time and to all your video tutorials!
Does this help: ruclips.net/video/pxx1ueCbnls/видео.html
@@SwiftfulThinking I'll check that out and see how I could implement those techniques you've presented in that Mask tutorial, to the View that I had in mind. Thanks!
@@SwiftfulThinking Hi Nick, I know that creating a ViewModifier requires a function or method in it --- func body (content: Content) --> some View. Can I embed another function/method within this? If yes, please show me how. I'll appreciate so much your response. Thanks!
Man you're a Legend , I want to ask can you do a complete Complex App like Uber . thanks for your effort
Awesome
Thank you, really aprreciated
I liked the video but I find this example (of a button) would be better implemented as a custom view...
thanks for lecture
sanks bro!
Bro please do video on Extensions
Haha I didn't think they needed a separate video. It's just an extension of a class or struct that we can then put anywhere in our code!
Thank you som much ,, can you post the github address links about these course coding examples so that I can download to learn
I like a new Music 😂
My app is about to get a major refactoring!
Let’s gooo 🚀
Video starts @ 7:35
Also 1.5x speed
Honestly, unwatchably slow. "Advanced learning", spending more than four minutes on creating a new project, then spend five minutes explaining why it's a bad idea to copy and paste the same code over and over. This video should have started at 9:15 and ended at 9:30, skipped to 12:30, then just end at 13:00. Nothing before or after that had any value whatsoever and was 100% a waste of time. Also, no need to remove the font, just override it by putting it after the modifier if necessary. This video being 19 minutes was a robbery of time, yours and ours.