New Barnet: John Libbey Publishing Ltd., 2010, distributed by Indiana University Press. John Belton, Sheldon Hall, and Steve Neale, eds. Lexington: University Press of Kentucky, 2011. Letterboxed: The Evolution of Widescreen Cinema. This is an area that I don’t have a lot of practice in, but I’m curious to see how it is applied to validate user interface functionality and state transitions.Harper Cossar. Unit Testing-For future projects I would like to leverage unit-testing and experiment with test-driven development. Now that Cinescope has shipped maybe it’s time for a pet project! There are always new things to discover about the latest version of Swift. I would love to add an edge detection feature using CIFilter to assist with manual focus and also do something cool with the dual-camera depth capabilities. Swift and iOS Fluency-Not all of my Swift code is written in a “Swift” way, and there are new language and framework features that I’m not taking advantage of. I don’t really have a point here other than to say I’ve been writing code since I got my Commodore 64 and damn, I know less now than I did back then. Sometimes I lie awake at night staring wide-eyed at the ceiling, unable to sleep because I’m filled with the existential dread that I’ll never know enough and oh my god I’m a total hack. PhotoKit and AVFoundation are so deep and complex that even though I’ve successfully released an app that leverages them, I can’t claim to have mastery…and those frameworks represent perhaps 1–2% of the iOS operating system. Since iOS development is done in my spare time it’s a challenge for me to stay current on the constant changes with Swift, iOS frameworks, and Apple hardware. My day job is Principal Product Designer at Duo. Parting Thoughts Writing Code, A Sisyphean Task You’ll need to create an instance of MPVolumeView in order to preemptively control the volume value. This means the “capture using volume buttons” feature will appear to be broken to users. However, if the device’s volume is either at minimum when the down-button is pressed or at maximum when the up-button is pressed then no KVO notification will be sent. The first step is to use KVO to listen for volume changes. I came across helpful code from other developers and they served as a good starting point for creating something that worked well for my needs. But it’s not explicitly exposed by any iOS framework, which means implementations tend to be kludgey. This is something that the iOS camera app supports, as well as other photo apps. Overloading the volume buttons-We had a lot of requests to allow photo capture using the iPhone volume buttons. But I think it’s an interesting interface that I hope to repurpose for a future project. Unfortunately, this design direction was scrapped for a different solution. Note: The Codable protocol is a necessary addition for me to be able to store AspectRatio objects and AspectRatio arrays in UserDefaults. There is business logic specific to each type, so I used a protocol to establish the basic interface and then extended structs adopting that protocol to support the required functionality. The new version of the app supports storing both standard and user-defined ratios. In fact, Apple recommends favoring structs and protocols over classes to represent information and behavior.Īspect Ratios-An example of this in action within Cinescope is how I model aspect ratios. This design choice fits in perfectly with a service-based architecture, which is the pattern I use for all of my projects. The thing to understand about structs is that they are essentially value-type classes, which means you won’t produce side-effects when modifying internal data. I think of structs as super-enums or mini-classes-depending on the day-because in my brain they exist half-way between the two types.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |