Malcolm Hall

  • About
  • Research
  • Consultancy
  • Products
    • AppRecorder
    • Apps Using Location
    • Clipboard Monitor
    • Common Rocks Reference
    • Core Location Info
    • Friendify
    • Grape Stomper
    • HomeMenu
    • iBeacon Scanner
    • Insomnia
    • Navigate from Maps
    • Nickname
    • Plate Smasher
    • Plugged In
    • Readster
    • Resize Image
    • Read★
    • ScreenshotMenu
    • Sleep Display
    • SleepFX
    • Stealth Cam
    • TV Tube Sleep
    • UDID Calculator
    • WiFi Booster
    • WiFi Passwords

SwiftUI, Swift, Objective-C and iOS Development

SwiftUI

Make a Simple Circular Button in SwiftUI

I came across this interesting Stack Overflow question How can I make a simple circular button in SwiftUI in macOS? It’s interesting because all of the proposed solutions required hard-coding a frame size. I decided to experiment with how to Read more…

By malhal, 4 months1st June 2023 ago
Uncategorised

How to download Apple event videos in 4K with Dolby Atmos

First visit the Apple Events web page and find the link to the stream you want to download, e.g. the link for the iPhone 14 event from September 2022 looks like this: Now you need to install the yt-dlp command Read more…

By malhal, 5 months15th May 2023 ago
Concurrency

Async/await command line tool in Xcode 14.3

TLDR: add @main and rename main.swift To create a command line tool in Xcode 14.3 that uses async/await there are a few tweaks required. When we create the project using the Command Line Tool template we are left with a Read more…

By malhal, 5 months25th April 2023 ago
SwiftUI

Learn SwiftUI’s View struct: value semantics, diffing and dependency tracking

Learning SwiftUI can be tricky because it has a very different design to previous UI frameworks. Many make the mistake of trying to apply old design patterns which are not really compatible because of SwiftUI’s use of value semantics and Read more…

By malhal, 6 months23rd March 2023 ago
Concurrency

@MainActor does not always mean main thread

Seems to me some developers think that @MainActor means “always main thread” and has the same behaviour as DispatchQueue.main.async which I don’t think is try. For example, the code below outputs: Because the Database class is not marked as @MainActor Read more…

By malhal, 8 months31st January 2023 ago
SwiftUI

NavigationSplitView with List selection of different types

I came across an interesting Stack Overflow question about how to support List selection of different types when using NavigationSplitView when in regular width, e.g. on iPad landscape. This problem doesn’t arise with NavigationStackView because multiple ForEach can simply iterate Read more…

By malhal, 9 months12th January 2023 ago
SwiftUI

Multiple sheets in SwiftUI using subviews

If you need to show multiple sheets in SwiftUI it is best to use the framework features to your advantage. Rather than try to abstract the problem into a generic coordinator object, which you then have to unbundle again to Read more…

By malhal, 10 months29th November 2022 ago
SwiftUI

Nested Property Wrappers in Swift

I designed a better way to nest property wrappers than other examples I’ve seen in this article and this Stack Overflow question. The sample below is a redesigned version of the code in the question, which I also posted as Read more…

By malhal, 11 months18th November 2022 ago
SwiftUI

UITextView in a UIViewRepresentable

I’ve seen a lot of code shared online getting the Coordinator wrong so thought I’d share an example of how I believe the Coordinator should be done. makeView returning context.coordinator.textView is taken from Fruta’s PaymentButton.swift but the ideas of the Read more…

By malhal, 11 months17th November 2022 ago
MapKit

UIViewRepresentable with Coordinator Example

There are not many examples of correctly using a Coordinator with UIViewRepresentable so thought I would share one here. You’ll see many examples including some from Apple that return Coordinator(self) which is completely wrong because the UIViewRepresentable is a struct Read more…

By malhal, 11 months16th November 2022 ago

Posts navigation

1 2 … 4 Next
Recent Posts
  • Make a Simple Circular Button in SwiftUI
  • How to download Apple event videos in 4K with Dolby Atmos
  • Async/await command line tool in Xcode 14.3
  • Learn SwiftUI’s View struct: value semantics, diffing and dependency tracking
  • @MainActor does not always mean main thread
Recent Comments
  • Why Does URL Scheme/onOpenURL In SwiftUI Always Open A New Window? - Programming Questions And Solutions Blog on Open window / scene in SwiftUI 2.0 on macOS
  • Ken Carroll on Enabling iOS 9.3 SDK in Xcode 8 for iOS 10
  • Mr WordPress on Welcome to my Developer Blog
Archives
  • June 2023
  • May 2023
  • April 2023
  • March 2023
  • January 2023
  • November 2022
  • June 2022
  • December 2020
  • May 2018
  • October 2017
  • September 2017
  • August 2017
  • January 2017
  • July 2016
  • May 2016
Categories
  • CloudKit
  • Concurrency
  • CoreData
  • Mac
  • MapKit
  • NSOperation
  • Objective-C
  • Swift
  • SwiftUI
  • UIKit
  • Uncategorised
  • Xcode
Meta
  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org
  • About
  • AppRecorder
  • Apps Using Location
  • Clipboard Monitor
  • Common Rocks Reference
  • Consultancy
  • Core Location Info
  • Friendify
  • Grape Stomper
  • HomeMenu
  • iBeacon Scanner
  • Insomnia and Insomnia Pro for iPhone
  • Navigate from Maps
  • Nickname
  • Plate Smasher
  • Plugged In
  • Products
  • Projects
  • Read★
  • Readster
  • Research
  • Resize Image
  • Sample Page
  • ScreenshotMenu
  • Sleep Display
  • SleepFX
  • Stealth Cam
  • TV Tube Sleep
  • UDID Calculator
  • WiFi Booster
  • WiFi Passwords
Hestia | Developed by ThemeIsle
 

Loading Comments...
 

You must be logged in to post a comment.