Build a custom player on top of AVFoundation
When building an iOS/tvOS application with video playback, the best player solution can be to build a custom one to match the exact application requirements. This article is a technical...
UIKit rendering - The run loop
On the previous post, we discovered that the commit of the current implicit transaction is responsible of our initial interrupted layout phase. So we only have one question left: when...
UIKit rendering - CATransaction
On the previous post, we discovered a mysterious CATransaction.commit at the bottom of our interrupted layout phase stack. Let’s find out its role in the layout process. Experimentation The CATransaction...
UIKit rendering - Tracking a layout phase
On iOS, the layout of a view hierarchy is expressed dynamically using the Auto Layout constraint system. Thus a view hierarchy can adapt itself to all the possible device screens...
Android, from LiveData to StateFlow
The following article will detail how we can replace the presentation layer’s livedatas with stateFlows and some caveats we encountered along the way. On the 30th of October, kotlinx.coroutines 1.4.0...
Video playback on iOS & tvOS
When developping an application on iOS and/or tvOS, video playback can be a strategic or accessory component. There are different solutions available on iOS/tvOS, each of them with pros and...
Understanding Copy on Write
In a previous article we saw the difference between reference and value types in Swift. Let’s look at the memory management a bit closer! Heap, Stack, value types and reference...
Implementing fastlane in 50 lines of code
Fastlane is a tool used by almost every mobile developer. The main advantages are its simplicity, the time it saves us and the fact that it’s built on top of...
Types of types
Let’s talk about types and memory! In Swift a type can either be value type or reference type. Value types A Value type is a type that provides value semantics....
Linting licenses
Dependencies are at the core of programming. In iOS, we often use Cocoapods to manage dependencies in our projects. But if we are not careful, we can add a dependency...