Designing a custom control
Before starting with the code itself, it is very strongly recommended (read mandatory) to plan and design the control that you want to build. This is probably the most important part of the whole process. Thanks to a good plan, you can evaluate case by case, which involves the real effort in going custom, and even define whether you actually need a custom component.
The first question you have to ask yourself or your team is, "Why do I need to build this?" You might come up with different answers: "I need a completely custom design for a control that already exists but can't be customized enough using the UIKit appearance only", "the functionalities and interactions that I need can't be handled by any other UIKit component", or even "I want to slightly modify a UIKit component that already exists, but my needs cannot be satisfied just by subclassing it". All these are valid answers that might lead you toward implementing your very custom control. So, what about...