RSSAmplifier

Blog

Alexander Weiß's blog feed

A blog by Alexander Weiß about mobile app development for iOS and Swift

alexanderweiss.devRSS feed ↗20 posts

Latest posts

Concentric Buttons with OS 27's SwiftUI APIs

SwiftUI for iOS, iPadOS, and macOS 27 (I'll shorten this to OS 27 from here on) is bringing a lot of new additions. One particular addition that is very…

The Anatomy of a Reusable SwiftUI View

Whenever I build a custom reusable SwiftUI view as part of a larger application's design system, I follow the same principle: design its API to be as close as…

Multi-Version Multi-Framework DocC Documentation

A few days ago I faced the requirement to create a versionised DocC based documentation of some SPM library. I recalled my earlier work with DocC, which lacked…

@_exported import VS public import

Swift 6 introduced a new feature called "Access level imports". With SE-0409 you can attach access level modifiers to your import statements. In the past I was…

Adaptive sheet presentation in SwiftUI

It's December, and a very eventful year is coming to an end. While I haven't had much time to write posts recently, I still want to finish off this year with a…

SwiftUI's editMode environment

In the last week, I was confronted with implementing a similar edit mode to a SwiftUI List as seen in the Mail app. So on tapping on an "Edit" button the list…

DocC for Multi-Platform Documentation

Writing documentation is an essential part of developing and distributing software. It is often the first point of contact for developers interacting with your…

Effortless SwiftUI Theming

Building on my previous post, let's take a closer look at theming in SwiftUI. In this discussion, I'll show you how to create a customizable solution that…

The Power of ShapeStyle for Colour theming in SwiftUI

As the year comes to an end, I am using my free days to explore some concepts in SwiftUI that I set aside for a longer time now. One of those topics was custom…

Using TextRenderer to create highlighted text

TextRenderer is a new protocol introduced at WWDC 2024 which lets us enhance how text is rendered in SwiftUI. In this small post, I want to show how to create a…

Style your TipKit Tips

iOS 17 is set to release soon. Let's take a look at TipKit and how to customize its appearance. Basic Setup To start using TipKit, we need to set up the basics.…

Push Notifications in SwiftUI

SwiftUI has been available for several years, but I have never had to handle push notifications in a pure SwiftUI application until now. My goal this past week…

AppStore Connect: Manage Version and build number

I have released quite a few apps already, mostly at work but also personally. When releasing, I was facing issues with signing, Xcode configurations, CI/CD…

AppIntents for Widgets

During WWDC 2023 Apple announced that the AppIntents framework can now also be used to create Widget configurations. Since last year's announcement of…

Double Protocol Conformance

Sometimes fixing issues in your codebase can have side effects you never thought of. You assume everything that could go wrong was considered but then once…

LPMetadataProvider - Extract URL metadata

In my side project I am handling various URLs to various websites a user can save to keep track of their analytical data. To enrich my UI with some metadata…

SwiftUI's .task modifier

While developing any kind of SwiftUI application it is often necessary to run some data loading when the view actually appears on the screen. In the past week,…

Widget Intent recommendations on watchOS and a bug

Intent definitions are used to make interactions with app extensions configurable. Most primarily they can be used to configure your widgets on the home or lock…

iOS UI Testing with maestro

It was around September last year when I first heard about maestro and mobile.dev. maestro is a CLI tool which lets you easily write E2E UI tests for your…

Detect watchOS app state changes

When developing an Apple Watch companion app for your iOS app it can become important to know when something happens to the state of the watch. In one of my…