Custom Controls in iOS - Part 1: Introduction | Ray Wenderlich

Find out what's covered in our Custom Controls in iOS video course!

This is a companion discussion topic for the original entry at

Hi I have problem with using Asset pdf image file for universal with UIControl.
My custom control didn’t render pdf to match button within my custom control, I test it on iOS 10.2 simulator.

Improper Swift programming here. The instructors are not programming the Swift way where attribute encapsulation is outlined in a protocol where the “getting” and/or “setting” behavior is to be defined. Use of fileprivate, etc. is incorrect and not needed in modern OOP design patterns.

I really really tried to like this lesson and follow it along, but this is badly paced. The examples are way too involved with core image and there isn’t much explanation. A lot of the code is already provided but without much context.

For the most part this lesson feels like debugging controllers that are 90% built. The first example that covers composition is well built since it start from the beginning and explains all aspects of it, but the three ring slider and the colorgon are rushed through. It also feels like there could be three or four other examples between the DeluxeButton and ThreeRingSlider.

Thank you for the feedback!

If you could let us know what code you think falls into the “already provided but without much context” category, that will be useful when we update the course in the future.

Did you go through the challenges by any chance? We put a lot of code there that supports what happens in the following videos. From this point on, the challenges are going to be in video form also, which hopefully will help.

Hi Jessy,

Yes I did go through all of the challenges I don’t think that’s the issue. I just think the ThreeRing and Colorgon are too ‘meaty’ for a lesson like this. They have too many moving parts and trying to touch on them in a single lesson feels overwhelming. This is where students might feel some aspect of the lesson is out of context and wish there was more background info. Now I know this is an advance course and has its prerequisites, but the prerequisite to completely understand what is going on is already advanced enough that anyone who knows it, probably wouldn’t need this course.

Some examples of where I thought more context and background was needed:

With CircularGradientLayer, that class was shown and skipped over without much explanation on how it’s creating the color effect. This layer uses CIColorKernel and some shading scripting that as far I was concerned was a black box that magically created the desired effect.

In AdvanceAnimation,I found myself pausing and looking stuff up continuously. I think covering the CAKeyframeAnimation extension in more detail would have been helpful. Again, I think someone who knows CoreAnimation well enough to completely follow along, wouldn’t need this part, and someone who doesn’t wouldn’t be able to follow it.

In CoreImage CoreGraphics, you guys cover a ton of stuff. Within 11 minutes you had touched on CoreImage Kernel, Layer draw, creating a ciImage from a kernel, using cgContext, prepareForInterfaceBuilder, creating CAShapeLayer mask using CGMutablePath, Strides and etc.

That being said, I thought you guys are great at presenting the material and it’s obvious you know your stuff. The deluxeButton example was great and the Gesture Recognizer section was perfect. I just wish instead of the ThreeRing and Colorgon, you guys had used simpler examples. Something that focuses more on how to design and develop a custom controller from the ground up using more basic aspects of CoreImage, CoreGraphics and CoreAnimation

1 Like

Thank you (again) so much for the fantastic feedback. Our own feelings are reflected in much of what you’ve said. For the next time we update this course, or something based on it, we’ll be sure to devote more time to the topics, across more videos. Either those videos should be in the course itself, or covered in new courses that are clearly marked as being prerequisites.

1 Like

Why do you use CIColorKernel for the gradient instead of CAGradientLayer?

@jessycatterwaul Could you please take care of this one when you get a chance? Thank you - much appreciated! :]

Hi there!

To which use of CIColorKernel are you referring? There’s one use of it in the second project, and one in the third.

In CircularGradientLayer from HealthRings.

Not to sound mean but the instruction style of these 2 instructors is not good.
First having 2 instructor which switch randomly is distracting.
Second the girls voice is to high pitched and wavy.
Third they move their body a lot which distracts…
Fourth I do not know why many interesting topics are covered by these 2 instructors :frowning:

Hi, anyone has tips on best practise testing custom controls in iOS? UnitTest or similar? Thanks

@catie Can you please help with this when you get a chance? Thank you - much appreciated! :]