This session we will learn about functions by making colors with UIColor.
Welcome to lesson 7 of KinderSwift.
In our last lesson we used this
to convert a
Int into a
Double and this
to convert a D
ouble into a
Int. Both of these are functions.
Functions take the data within the parentheses and change it into something else.
Most of Swift is made up of using or creating functions. There are math functions such as this one:
Which calculates the square root of 100 or this that calculates ten to the power of 3
Here we have more than two numbers in the parentheses separated by commas. Each of these is a parameter. A function may have any number of parameters.
Functions are not just for numbers. For example this:
UIColor(white: 0.5, alpha: 1.0)
Is a function with two parameters. Often you will see identifiers for the parameters, in this case
alpha. This function makes different colors between black and white.
Here is a function with four parameters.
UIColor(red: 1.0, green: 0.8, blue: 0.2, alpha: 1.0)
This function has a range. The parameters can be from 0 to 1.0. We will need to find documentation to tell us this though. Often you can get to the documentation by clicking the mouse button while hitting option while on a keyword. You can get the most information by clicking the Class reference link.
Functions may have other expressions, even functions or variables inside them. Often colors get described as values of Red green and blue in a range from 0 to 255. We might have a color described by. (255, 90, 00). We need to divide by 255 to get a range of 0 to 1. We can write that like this:
UIColor(red: 255.0/255.0, green: 90.0/255.0, blue: 0, alpha: 1.0)
Parameters do have type. We can guess that the
UIColor function has the type
Double,but we would be wrong. It has a new type for us
CGFloat is a floating point number like Double, but used for computer graphics.
Let’s try a variable. Type this:
var myRed = 255.0/255.0 UIColor(red: myRed, green: 0.8, blue: 0.0, alpha: 1.0)
you get an error.
myRed is the wrong type. It is a
Double not a
CGFloat. We have to declare it
CGFloat to work here. Compilers like Swift are very fussy about this.
Double might look the same to us, but not to Swift.
Add a type to
var myRed:CGFloat = 255.0/255.0
and everything is okay.
How can we tell what type to use? One way is we watch autocomplete type the statement for us: Try it, Type this
We get this:
You’ll see that the parameters give their type, just like we assigned types with var and let.
You will also notice something else. there are a lot of functions named
UIColor, but with very different parameters. Most of these you will never use, but there a few you might. We’ll discuss which ones in a few lessons when we start making user interfaces.
There are so many functions for
UIColor because is
UIColor is a type. You might have noticed we broke the rule about a lowercase letter for an identifier in a lot of these functions such as
pow() are both lowercase.
Ones with capital letters are all special functions called Initializers. They set the initial value of a type. Usually we assign them like this:
var myColor = UIColor(red: 1.0, green: 0.8, blue: 0.2, alpha: 1.0)
We can then use
myColor later in our program. Like
Double sometime we use them once to cast a type without assigning them.
For example I can cast
myBlue which is a Double into a
CGFloat if I need to in my
UIColor function like this:
var myRed:CGFloat = 255.0/255.0 var myBlue = 200.0/255.0 UIColor(red: myRed, green: 0.8, blue: CGFloat(myBlue), alpha: 1.0)
Another name for a type is a Class. While there really is no difference between a class and a Type in Swift, the general rule is classes are more complex types.
UIColor is a class which has its own functions and variables. Classes will be our focus for many of our upcoming lessons, but to get your feet wet, I’ll introduce another type of function: A class method.
UIColor has a lot of class methods, many without parameters. Instead it has a blank parentheses pair. You use class methods by stating its type then a dot, then the function. for example there is this:
There are many more of these. Before the next lesson play around with some of the UIColor Class methods and the Red:green:blue:alpha: initializer. You can scroll for them in autocomplete or you can use this list:
Next time we’ll make our own functions.