Swiftoberfest is over for this year! 62 new articles from me (and over a dozen reader submissions) should give you lots of reading as the nights grow longer. Next stop: Swiftmas!
Here in the UK the nights are starting to grow longer as we edge towards winter, so I figured it would be a good time to invent a new holiday shakily stolen from Bavaria’s annual Oktoberfest celebration. So, I’m pleased to introduce you to Swiftoberfest: an all-new way to help you learn throughout October.
Here’s how it works: every day in October, from the 1st to the 31st, I’ll be posting a new article here on Hacking with Swift. This will mostly be additions to my Swift Knowledge Base, but there will be some longer ones too.
Yes, this is in addition to me posting a new article every day for my 100 Days of SwiftUI.
So, if you’re following the 100 Days course and Swiftoberfest you’ll get two new articles every day.
Now, I have some bad news and some good news.
First, the bad news: none of those new articles will be about SwiftUI. Yeah, I know – SwiftUI is the cool new kid on the block, but also need to pay some attention to the wealth of other marvelous things Apple make available to us.
Now for the good news: if you follow me on Twitter you’ll know I spend far too much time noodling around with SwiftUI to leave it alone for a whole month.
So I thought to myself: what if I could write a 100 Days of SwiftUI article, a new knowledge base article, and an addition to SwiftUI by Example – three articles every day for a month? Could I do that while also speaking at Mobiconf in Poland and Pragma Conference in Italy?
More importantly, should I do that?
Of course you know the answer already, which is why you know I’m going for the big three: every day for October you’ll get a new chapter in SwiftUI By Example, a new entry in my Swift Knowledge Base or longer article, plus another day of tutorials with my 100 Days of SwiftUI curriculum. Some will be easier and some harder, but I feel confident you’ll learn something new during Swiftoberfest.
Best of all, it’s all going to be free.
To make things easier to find, I’m going to add links below as I post each new article, with the first links arriving tomorrow.
Every day I’ll write a new chapter in SwiftUI By Example and link to it below.
- How to change the order of view layering using Z index
- How to make a view dismiss itself
- How to hide the label of a Picker, Stepper, Toggle, and more using labelsHidden()
- How to disable the overlay color for images inside Button and NavigationLink
- How to make a fixed size Spacer
- How to detect the Reduce Motion accessibility setting
- How to use Dynamic Type with a custom font
- How to tile an image
- How to use decorative images to reduce screen reader clutter
- How to get translucent lists on macOS
- How to create constant bindings
- How to add spacing between letters in text
- How to make carousel lists on watchOS
- Common SwiftUI errors and how to fix them
- How to start an animation immediately after a view appears
- How to disable autocorrect in a TextField
- How to show multiple alerts in a single view
- How to hide and show the status bar
- How to create custom bindings
- How to control the tappable area of a view using contentShape()
- How to read the Digital Crown on watchOS using digitalCrownRotation()
- How to create a custom transition
- How to add horizontal and vertical scrolling using ScrollView
- How to delay an animation
- How to disable taps for a view using allowsHitTesting()
- How to draw a border inside a view
- How to use a timer with SwiftUI
- How to set the background color of list rows using listRowBackground()
- How to position views in a grid
- How to apply multiple animations to a view
- How to create 3D effects like Cover Flow using ScrollView and GeometryReader
Every day I’ll either write a new entry in my Swift Knowledge Base, write a longer article in the articles section of the site, or something else, then link to it below.
- How to let users choose a font with UIFontPickerViewController
- How to use SwiftUI in Swift Playgrounds
- How to show a relative date and time with RelativeDateTimeFormatter
- How to detect your iOS app is running on macOS Catalyst
- How to perform sentiment analysis on a string using NLTagger
- How to decode JSON from your app bundle the easy way
- How to join an array of strings in a natural way
- How to modify haptic events over time using CHHapticParameterCurve
- How to use Core Image filters the type-safe way
- How to reload a UITableView while preserving selections
- How to convert a multidimensional array to a single-dimensional array
- How to find similar words for a search term
- How to compress and decompress data
- What’s the difference between map(), flatMap() and compactMap()?
- How to check and unwrap optionals in tests using XCTUnwrap()
- How to build a UICollectionView like the App Store
- How to disable interactive swipe to dismiss for view controllers
- What are inout parameters?
- How to support low data mode networking using allowsConstrainedNetworkAccess
- How to help VoiceOver read specific kinds of text using accessibilityTextualContext
- How to disable undo, redo, copy, and paste gestures using editingInteractionConfiguration
- How to detect whether haptic event playback is supported
- How to benchmark app launch time using XCTOSSignpostMetric.applicationLaunch
- How to check whether one date is similar to another
- How to set the clock in the iOS Simulator
- What's the difference between leading, trailing, left, and right anchors?
- How to make a network request wait for an internet connection using waitsForConnectivity
- How to convert between camel case and snake case with Codable and keyEncodingStrategy
- How to make one operation wait for another to complete using addDependency()
- How to convert dates and times to a string using DateFormatter
- How to group user notifications using threadIdentifier and summaryArgument
Celebrate Swiftoberfest yourself!
If you write a Swift-related blog post in October, tweet me the link and I’ll add it here – I’d love to include links to other Swiftoberfest posts and help promote your work right here. It can be about whatever you want, as long as it’s online, Swift-related, and free to read.
- Volodymyr Klymenko has written A list of awesome Swift projects to contribute to on Hacktoberfest 2019, which links to a number of great suggestions for places you can get involved this October.
- Andy Ibanez wrote Playing Custom Haptics on iOS, going into detail on the new Core Haptics framework in iOS 13.
- Rob Whitaker wrote SwiftUI Accessibility - Sort Priority, showing how to control the order in which accessibility tools read our UI.
- David Piper wrote Playing music and sound effects in a SpriteKit game, showing how to make it easier to add audio to your next SpriteKit game.
- Derik Ramirez wrote Using Kernel Queues notifications in Swift, going into impressive depth on how to use Swift to monitor socket events and filesystem changes.
- Sarun W wrote Data in SwiftUI, starting a new series where they explore how data dependencies and sources of truth are more important than ever with SwiftUI.
- Rob Whitaker wrote SwiftUI Accessibility - Traits, explaining how to provide additional context to the accessibility system.
- Derik Ramirez wrote XPC Services on macOS apps using Swift, showing that he literally has no fear of pushing Swift to its very limits!
- David Piper wrote Creating a tutorial for a SpriteKit game, providing a practical example of how to on-ramp new users in your game.
- Sarah Reichelt wrote SwiftUI Data Flow, giving a beautifully clear and concise example of SwiftUI's various data binding approaches, complete with lots of screenshots and sample code.
- Majid Jabrayilov wrote View composition in SwiftUI, giving detailed examples of how to break large SwiftUI views into smaller ones using properties, groups, and more.
- Daniel Munoz wrote Self-Sizing Hell, a detailed account of creating self-sizing cells for collection views and table views when you have complex layouts.
- Bill Chapman wrote Swift Data Science: Time Series, which is a multi-part data science series aimed at teaching high school students some Swift while they evaluate data about climate change.