Logomark
Join thousands of developers learning development
on NSScreencast.

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.

Get access to over 250 screencasts covering all aspects of iOS development.

Why NSScreencast?

I started NSScreencast in 2012 and have been putting out 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.

Get notified of new episodes

Bite-sized screencasts on iOS and Mac development.

Displaying Episode 25 - 48 of 266 in total
lock
#242
242 designing a custom download button part 1
In this episode we create a custom control to serve as our download button. We start by creating a circular progress indicator using CAShapeLayer, then move on to subclassing UIControl to provide our image view and touch handling.
lock
#241
241 file downloads part 3
In this episode we take the download state and progress notifications and update the user interface to reflect this state. We'll see how to translate the notification into the indexPath for that episode row, and how to fake a change related to the fetched results controller to trigger a reload of the content. We will leverage the RateLimit library to save periodic changes in progress to the model without overwhelming Core Data.
lock
#240
240 file downloads part 2
In this episode we create a DownloadInfo model in CoreData in order to track the state of a download, separate from any view controller.
lock
#239
239 file downloads part 1
Downloading large files on iOS represents some unique challenges. Downloads should occur in the background, not confined to a particular view controller. They should be able to report progress on multiple screens, and should be robust enough to survive application suspension and failing network conditions, and respect the user's cellular data plan. In this episode we start a series on downloading large files that will cover all of the above concerns.
lock
#238
238 core data in ios10
iOS 10 brings some welcome improvements to Core Data, including the all new NSPersistentContainer class. With this release, Apple has created a streamlined API that captures the most common uses of Core Data in iOS applications. In this episode we'll take a look at NSPersistentContainer, as well as the new code-generation capability in Xcode 8.
lock
#237
237 swift 3
Swift 3 is now out and contains a host of new features and syntax changes. In this episode we'll look at a few of the more common changes you'll run into when upgrade projects to Swift 3 including implicit method argument labels, dropping the NS prefix on a bunch of classes, and the new Swift API naming guidelines.
lock
#236
236 creating sticker pack applications
Now that iOS 10 is out, we can now create sticker packs to use in iMessage. In this episode we'll create a sticker pack using some artwork made by Jory Raphael, the very same designer who makes the lovely artwork you see on each episode. This particular sticker pack will be available soon in the App Store!
lock
#235
235 working with the pasteboard
In this episode we take a look at UIPasteboard, allowing us to inspect, copy, and paste content on the system pasteboard as well as your own custom pasteboards. We'll also look at adding multiple representations of the same item to be a better OS citizen, for instance by copying rich text alongside plain text.
lock
#234
234 universal links
Universal Links is a great feature that allows us to render content in an app when a user hits a known URL, instead of opening Safari. For content-based applications, this can be especially useful, as often records that exist on the web also exist in the app. We'll leverage our work from Episode 231 on Shared Web Credentials and extend the demo app to take advantage of Universal Links.
lock
#233
233 snapkit
Writing Autolayout constraints from code can be quite tedious. SnapKit, the Swift-friendly successor to Masonry, is a friendly DSL that allows creating and updating constraints easy and readable. In this episode we use SnapKit to build out a simple interface mockup using Autolayout completely in code.
lock
#232
232 calculating spring velocity
UIView has an incredibly useful spring-based animation API, but it can be difficult to know what to use for the damping and initial spring velocity parameters. In this episode, we'll break down how to compute the velocity value using the values we get from our UIPanGestureRecognizer and a little math.
lock
#231
231 shared web credentials
In this episode we implement shared web credentials with a server, allowing users to automatically enter credentials in our app if they've already done so in Safari. We cover building a Sinatra app for our server, deployment to Heroku for free SSL and a unique domain, and adding the appropriate entitlements to our app.
lock
#230
230 interview with david smith
In this episode we have a special guest: "Underscore" David Smith, the creator of Activity++! In this episode we chat about the implementation details of Activity++, and how it differs from the one we've been building.
lock
#229
229 lets build activity plus plus part 7
We build our activity streak detection algorithm, testing it along the way with Quick and Nimble.
lock
#228
228 lets build activity plus plus part 6
In this episode we allow for generating health data for use in the iOS simulator, where HealthKit data will not be available. We then create some known streaks to make the streak detection and UI decoration easier to test. We end the episode by setting up Quick and Nimble that we will use to test our streak generation algorithm.
lock
#227
227 lets build activity plus plus part 5
Continuing our series on building out our Activity++ clone, this time we hook up our application to HealthKit, displaying real data in the app from a device. We continue to use our wrapper type so that the application can still work in the simulator with randomized data, which also allows us to set up certain scenarios that we wish to test, such as streaks.
lock
#226
226 lets build activity plus plus part 4
In this episode we examine the scrolling performance of our activity ring views. We see that framerate suffers when scrolling quickly, then apply a few changes to bring scrolling performance back to 60 frames per second.
lock
#225
225 lets build activity plus plus part 3
This week we take our ring views and use them to create a collection view of rings, one for each day in an entire year.
lock
#224
224 lets build activity plus plus part 2
Continuing in our quest to create the interface behind Activity++, this time we introduce a randomize button, proper theme colors, labels for the rings, and highlighting when the goal for each ring has been met.
lock
#223
223 lets create activity plus plus
Let‘s attempt to recreate Activity++, an application by _David Smith. The app features a number of interesting interface elements that would be interesting to try to build ourselves! In this part we'll start out by replicating the ring views for a given day.
lock
#222
222 easy auth part 3
In this episode we wrap up the Easy Auth series building the tvOS application to use our API. We'll create an authentication client and discuss how to pass around a set of values to and from the API, as well as polling for status.
lock
#221
221 easy auth part 2
This time we take a look at how to improve security by not transmitting the user's auth token directly. Instead, we'll leverage HMAC SHA1 hashing with the provided client id. Doing this makes the response not directly useful. The client needs to use the client id and the agreed upon hashing algorithm to arrive at the common auth token.
lock
#220
220 easy auth part 1
Typing a username and password on the Apple TV is cumbersome and annoying. For the NSScreencast TV app, I decided to implement a code-based authentication where you can easily log in on another device, type in the code, and have the device be logged in automatically. In this episode we'll go over how to implement this, starting with the server. This episode is done entirely in Ruby using the Sinatra web application framework, but the technique is applicable to any server side technology (including Swift!).
lock
#219
219 nscalendar
NSCalendar is a class that is easy to dismiss as standard, but is packed full of really useful functions. In this episode I talk about how I solved a problem using NSDateComponents, then came back and solved it in a much cleaner way using new methods on NSCalendar.