Whilst doing my research I found Apple's developer guidelines for iOS applications, I thought it was interesting and enlightening in to there design methods.
As much as possible, avoid increasing the user’s cognitive burden.
Users are familiar with the appearance and behavior of the standard UI
elements, so they don’t have to stop and think about how to use them.
When faced with elements that do not look or behave at all like standard
ones, users lose the advantage of their prior experience. Unless your
unique elements make performing the task easier, users might dislike
being forced to learn new procedures that don’t transfer to any other
apps.
Be internally consistent.
The more custom
your UI is, the more important it is for the appearance and behavior of
your custom elements to be consistent within your app. If users take the
time to learn how to use the unfamiliar controls you create, they
expect to be able to rely on that knowledge throughout your app.
Always defer to the content.
Because the standard elements are so familiar, they don’t compete with
the content for people’s attention. As you customize your UI, take care
to ensure that it does not overshadow the content people care about. For
example, if your app allows people to watch videos, you might choose to
design custom playback controls. But whether you use custom or standard
playback controls is less important than whether the controls fade out
after the user begins watching the video and reappear with a tap.
Think twice before you redesign a standard control.
If you plan on doing more than customizing a standard control, make
sure your redesigned control provides as much information as the
standard one. For example, if you create a button that doesn’t have the
rounded, dimensional appearance people associate with buttons, people
might not realize that it’s tappable. Or, if you create a switch control
that does not indicate the presence of the opposite value, people might
not realize that it’s a two-state control.
Be sure to thoroughly user-test custom UI elements.
During testing, closely observe users to see if they can predict what
your elements do and if they can interact with them easily. If, for
example, you create a control that has a hit target smaller than 44 x 44
points, people will have trouble activating it. Or, if you create a
view that responds differently to a tap than it does to a swipe, be sure
the functionality the view provides is worth the extra care people have
to take when interacting with it.