Blog

github   contact


recording a uiview
While converting a view to a bitmap image on Apple platforms is fairly straight foreward, creating a recording of a view can be surprisingly complicated. In this article, we'll look at some options and explore a technique I used to create custom Live Photo wallpapers in one of my apps. We'll end by looking at the new swift package I created for recording views, FlipBook, and some of its capabilities...
how to support fullscreen pdfs on ios
On previous versions of iOS, you could generate PDF versions of your app's content by using the system UI for printing, though it wasn't always obvious to users how to create a PDF. With iOS 13, PDF generation is much more discoverable, allowing users to create a fullscreen PDF from the markup modal that appears after taking a screenshot, but it involves using iOS 13's new UIScreenshotService. Today, we'll take a look at both the old and the new APIs and when you might want to use one over the other...
multiple windows on ipad
In the keynote of WWDC 2019, one announcement that got a little overshadowed by all of the other amazing announcements was the differentiation between the operating system that runs on the iPhone and the one that runs on the iPad. Starting this year, there is now an iPadOS. While there have always been iPad specific capabilities (split-screen multitasking and pencil support come to mind), now that the operating system for the phone and the tablet are no longer so closely tied, the promise is that more advanced, tablet-specific features can be created...
multi-camera arsession: part ii
AR World Tracking in an ARFaceTrackingConfiguration Session
This is part two of our a look at multi-camera support for ARKit sessions. If you haven't already, I suggest you check out part one. Whereas in part one we looked at how to create an ARWorldTrackingConfiguration that also had face tracking, now we'll look at how to setup an ARFaceTrackingConfiguration that also has world tracking. That is, in part one we were showing the feed from the back camera and only using the front camera to monitor a face, now we're going to show the feed for the front camera but use the back camera to monitor the world around the device. In the process of learning how to set up our ARSession to support this, we'll create an app that changes the diffuse color of the facial mask provided by the ARFaceTrackingConfiguration as the distance between the camera's current location and the global origin of the ARSession changes...
how to create nested usdz files
Some of the most exciting announcements of this year's WWDC, as it relates to AR, were made by the Quick Look and web team. Which makes sense, if AR is going to catch on in a major way a big part of that will have to come from having adoption all across the web. Furthermore, Quick Look is a great way to quickly add an AR experience in your app with the system doing a lot of the heavy lifting. From gestures to lighting, shadows to sharing, Quick Look makes it easy to go from 3D model to AR app. This year's session, Advances in AR Quick Look, had a number of intriguing announcements, but one that I found particularly useful is the ability to have nested USDZ files, in which you can have multiple USDZ objects that can be arranged and placed independently. That only left one question: how do you make one?...
multi-camera arsession: part i
AR Face Tracking in ARWorldTrackingConfiguration Session
At WWDC 2019 Apple announced support for multi-camera sessions for iOS devices (see here and here) Included in this is support for multi-camera ARKit sessions. While this was briefly demoed on stage, no sample code was released to show how to create what was demoed. After finding this StackOverflow question, I thought I'd write up how to setup an ARSession with multi-camera support, starting with an ARWorldTrackingConfiguration that also has ARFaceTracking. Later, we'll come back and look at how to do the reverse: an ARFaceTrackingConfiguration that has ARWorldTracking...

home   graph theory pad   cards viewer   passion projects