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.

#299
Camera capture and detection alt2
We get smarter about drawing, this time leveraging a custom path so we can display non-rectangular outlines.
#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.
#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.
#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.
#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.
#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.
#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.
#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.
#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.
#290
290 core graphics custom calayer
In this video we’ll learn how to use custom drawing with CALayers to support implicit animations.
#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.
#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.
#287
287 core graphics images
Sam shows how to use Core Graphics to draw images, which you might want to do if you want to blend techniques we’ve seen so far, such as clipping paths or gradients. Drawing images with Core Graphics is also useful to resize images if needed (perhaps if the API is returning one that is too large and you want to cache a thumbnail on device). You’ll also learn about a handy function to help you with aspect ratio math!
#286
286 core graphics context transforms
Transforms allow you to draw things rotated, moved, or scaled differently than you specified. You can use this technique to reuse drawing operations where they only differ by some small factor (like drawing lines on a graph), to tilt things like text, or to correct issues where the drawn element is upside down or sideways. In this episode, Sam shares a helpful technique of drawing a grid with a highlighted "origin square" to make it obvious what the transforms are doing.
#285
285 core graphics clipping paths
Clipping paths allow you to control where drawing occurs by providing a path in which to limit future drawing operations. Since you can create arbitrary shapes with CGMutablePath (and UIBezierPath) this can be an essential technique to get the drawing effect in some situations.
#284
284 core graphics gradients
Gradients are slowly returning to be part of the common iOS design aesthetic once again (after iOS 7 introduced an entirely flat design paradigm). Subtle gradients can be used to create interesting designs, provide necessary contrast for drawing text on top of photos, and provide a realistic feel to custom controls. Learn how to create linear and radial gradients, how to define custom locations to control the position and "shape" of the gradient.
#283
283 core graphics colors
What are color spaces? Sam discusses the common color spaces you might use and what they are used for. Why would you use these methods instead of just using UIColor? If you want cross-platform compatible drawing code, you’ll want to know how this works.
#282
282 core graphics paths c
Learn the basics of UIBezierPath and CGPathRef for representing drawing operations as a primitive type. Paths are incredibly useful to drawing and can be used to represent arbitrary lines, curves, and shapes.
#281
281 core graphics basic shapes
Learn how to create basic shapes using Core Graphics. We’ll start by creating a playground that we can use to quickly see the results of our work.
#280
280 core graphics intro
Sam introduces the new series on Core Graphics, what to expect, and what the series covers.
#279
278 swift 4 json parsing
We tackle some more complex (read: realistic) scenarios where the JSON structure doesn’t quite match the structure of the objects. We’ll do this by providing custom implementations of Encodable and Decodable, talk about keyed and unkeyed containers, and how you might be able to transform the date during the encoding process
#278
278 swift 4 json parsing
Swift 4 finally answers the long-debated question of: How should I parse JSON with Swift? In this episode we'll take a look at the new Codable protocol in Swift 4, and talk about how to use JSONEncoder and JSONDecoder to serialize your objects into JSON and back again.
#277
258 hello cloud kit part 1
We finish the CloudKitNotesManager by providing a generic save and delete methods that we can use for any CKRecordWrapper type. We also implement a custom notification when a note is saved so that we can update an interested view controllers to update their UI.
#276
258 hello cloud kit part 1
In this episode we implement a CloudKit version of our NotesManager protocol. Along the way we'll implement a reusable query function and run into a limitation with Swift generics that we will have to work around.