Logomark
A shot of to go with your morning coffee.

Curious? Get 3 great screencasts FREE.

Xom Venmo Tb Eyefi Twg Medium

Thousands of developers use NSScreencast to stay on top of iOS development.

Video Training for iOS Developers

The iOS landscape is large and changes often. With short, bite-sized videos released on a steady schedule, NSScreencast helps keep you continually up to date.

  • Quality content This isn't Youtube. Each screencast is carefully produced in HD quality.
  • Team Plans Get access for your whole team. NSScreencast makes for great lunch & learns.
  • Any Device Stream on the web, or use one of our apps for  tv, iPhone, and iPad.
Why NSScreencast?

Founded in 2012, NSScreencast has been releasing a new screencast each week for more than 5 years. With short videos you can learn a lot over time without a huge time commitment.

NSScreencast offers the largest collection of iOS development screencasts on the internet. With the range of videos that NSScreencast offers, there is something for people of every skill level.

Bite-sized screencasts on iOS and Mac development.

lock
#311
311 solid srp
In this episode we'll examine a type that has too many responsibilities and refactor it into multiple types, each with their own responsibility.
lock
#310
Solid
This episodes kicks of a new series on SOLID principles for improving at object-oriented design. Writing better code means writing code that costs less to change, which can be a crucial factor in delivering project successfully. In this series we will see how these principles apply to Swift.
Shape
#309
309 automatic uitableview paging
UITableView can support scrolling through many rows of data, however fetching large amounts of remote data can slow down your app, use up too much memory, and bog down your web server. This is all wasteful if users aren‘t ever going to scroll down that far. In this episode you‘ll learn how to perform automatic UITableView paging using an easy technique.
lock
#308
308 managing secrets
Our applications often depend on 3rd party services that require API tokens, Client IDs & Secrets, Passwords and other sensitive data. This data should not be checked into your source repository for numerous reasons. Having control over who has access to keys is important, especially for larger organizations. In this episode I will show you one technique for managing these keys without having to check them into git.
lock
#307
306 codable caching
In this episode we continue with our caching example, this time introducing a new type that will handle the caching for us, as well as wrapping the response type into a new type that will indicate to the view controller if the response was served from the cache or from the network. We end the episode by implementing Equatable so that our store can avoid needless double callbacks if the data has not changed.
lock
#306
306 codable caching
In a recent project I leveraged the Codable protocol to save API responses to disk to make the application more responsive (and to have an offline mode). I was happy with the results. In this episode we will add some caching to an existing application, saving JSON responses to the caches directory on the device.
lock
#305
305 codable and polymorphism
Codable is a great API, but sometimes real APIs can be tricky to model. In this episode we’ll examine a real use case of an API that returns a collection of elements, each of them similar but specified by a type. We’ll leverage Codable and inheritance to create a representation of this structure and show how you can peek into the container in order to determine what type to decode.
lock
#304
Camera capture and detection alt2
In this episode we extract our camera preview layer into its own view so we can add subviews. We’ll use this to add a flash button control to the UI, which will require us to learn about locking the device and controlling the camera’s "torch".
lock
#303
Camera capture and detection alt2
I got a tip from a subscriber about the method I used to capture the photo in the last episode. Since we're capturing the data using the preset we chose for processing the rectangles, we are bound to that preset when we export to an actual photo. By using AVCapturePhotoOutput, we can have much more control over the format, size, and quality of the resulting image. In addition, since we are leveraging the SDK for capturing the photo, we benefit from things like auto-flash, HDR, auto focus, and the built-in camera shutter sound. (Yay for deleting code!) The end result might not look very different on device, but if you are taking that image somewhere else to do OCR or other processing on it, a higher quality image is important.
lock
#302
302 designing icons with sketch
Sometimes we need to create a quick icon and we don't have a designer handy. Usually in these situations I lean on icon packs like Parakeet Primaries or Glyphish. Lately I’ve needed some icons that aren’t available in packs like these, or the license isn’t suitable for what I want to use it for. In those situations I use Sketch to create icons myself. I’m no graphic designer, but I have found it helpful to know how to create basic things and export them for use in iOS projects. In this episode I design 2 icons that we’ll use in a future episode.
lock
#301
Camera capture and detection alt2
In this episode we take the captured image and run the perspective correction filter on it in order to turn a skewed rect back into a flat rectangle. We then display the image on the screen for a few seconds as a preview mechanism.
lock
#300
Camera capture and detection alt2
In this episode we implement features that make the app feel more like a camera. When tapping the screen, we play the system camera shutter sound using AudioServices, then we add a small but useful flash effect to reinforce the fact the user took a photo. We'll also talk about a strategy for capturing the image by using a flag.
lock
#299
Camera capture and detection alt2
We get smarter about drawing, this time leveraging a custom path so we can display non-rectangular outlines.
lock
#298
Camera capture and detection alt2
In the last episode it was clear our coordinate math was wrong. But why? We will answer that question and solve the problem. We also add code to hide the box if it hasn’t detected a rectangle for a few seconds.
lock
#297
Camera capture and detection alt2
We learn how to convert a CMSampleBuffer into a CIImage and how to set up our CIDetector to detect rectangles. We then draw a box around the detected rectangle and discuss why adding simple subviews won't work with full screen sublayers.
lock
#296
Camera capture and detection alt2
We set up the preview layer so we can see the video, then we add a sample buffer queue so we can get access to the individual frames of the video coming through the capture session.
lock
#295
Camera capture and detection alt2
We start by setting up the project to take photos. We start by disabling rotation, which is typical of a camera app. We then add the appropriate Info.plist entry so that we can inform the user why we need camera access. We organize the view controller intro sections to keep things tidy as we add code to the project. Finally we setup the camera capture session, which is the first step to capturing video from the camera.
lock
#294
Camera capture and detection alt2
In this introductory episode I show the finished version of the application we will be building in this series.
lock
#293
293 core graphics working in appkit
Core Graphics is a cross-platform technology, but there are some gotchas to consider when working on mac apps with AppKit. Sam will go over some of these differences to help you avoid some common pitfalls.
lock
#292
292 core graphics watermark photo
In this episode we’ll learn how to draw images with core graphics, then watermark a photo by drawing text overlaid on top of it.
lock
#291
291 core graphics pie progress view
In this episode we’ll leverage what we've learned to create a reusable control that will show progress as a path outlining a circle, complete with animation.
lock
#290
290 core graphics custom calayer
In this video we’ll learn how to use custom drawing with CALayers to support implicit animations.
lock
#289
289 core graphics offscreen rendering
Occasionally you will want to do some custom drawing, but not have that presented directly on the screen. Sometimes this is to "bake" the drawing into an image for faster scrolling performance (a single flattened image can be sent to the GPU easily without having to composite a bunch of views together). This is also often used to resize images that are too large for the intended view. This episode covers drawing to a custom context offscreen and obtaining an image out of it.
lock
#288
288 core graphics text
In this episode, Sam shows how to draw text using Core Graphics. With this technique you can easily add text to images for pre-rendering, a technique we will see in another episode in this series.