How to add UIButton programmatically in SWIFT

In iOS app development sometime we’ve to create Buttons programmatically or dynamically. Today, I’ll show you how to do this using SWIFT programming language.

Let’s create a new Single View iOS application in Xcode. Name the project “DynamicButton”. Select swift as programming language.

Now go to ViewController.swift. In ViewDidLoad method we’ll write some codes that will add one button to the screen automatically at run time.

Let’s create a new method createButton and write some codes inside the method that will do the magic:

Explanation:

First we initialize a button object and keep it in button variable.

Then we set title and color of title of it.

In the following line of code, we add position and size of the button.

Add the button to view.

Finally let’s call the createButton in viewDidLoad method.

Now if you run the project (cmd + R) you can see a button created. If you tap on the button, nothing will happen at this moment. To call a method when button is pressed, we can write:

Do not forget to add ‘:’ after action method name (i.e. buttonPressed:). In action parameter of .addTarget, you set the method name that should be called. Now write buttonPressed method.

The buttonPressed: method simply displays an alert view. Now run the project and view result.

iOS Simulator Screen Shot Feb 18, 2015, 3.20.49 PM

The whole ViewController.swift will look like this:

 

Still feeling tired? Click here to download the project.

 

 

How to customise UIButton in SWIFT?

Tech experts are expecting that, objective-C will become history within a few years. We all are moving towards SWIFT – new programming language – which is more powerful and smart. It’s easier to grasp the basics of SWIFT and develop simple programs. But what about customising design elements of OS X and iOS? Can we easily customise them? Do the process is similar to Objective-C? Or should we start from scratch?

To answer all these question, we’ll discuss here customising UIButtons, UITextFields, UITextViews etc with SWIFT. In this article I’ll show you how to customise UIButton. Let’s start.

Requirements:

Operating System: OS X 10.9.4+

IDE: Xcode 6 (beta)

Level: Beginner to intermediate.

First thing first. Open Xcode 6 and create a new project. A dialog box will appear for selecting template. Choose single view application and press next.

Screen Shot 2014-09-14 at 2.05.25 PM

In the next box, type Product name. You can type anything but here I’ll write Customize Button. I’ve also used reverse of my website’s domain name com.webindream as Organization Identifier. You must choose Swift as language and press next.

Screen Shot 2014-09-14 at 2.09.51 PM

From next dialog box select the location where you want to save the project and press “Create” button.

 

Screen Shot 2014-09-14 at 2.11.39 PM

Now open Main.storyboard from Project Navigator (If you can’t see project navigator in the left side of the screen, press Commad+0). You will see a blank View Controller in the workspace window.

 

Screen Shot 2014-09-14 at 2.20.12 PM

Now drag and drop a button element from Utilities panel (If you can’t see Utilities Panel, press Command+Option+0) to the View Controller of the workspace (See above figure – bottom right corner). Get ready to customise this button.

Press Command+N (or File > New > File) to add a new file to the project. From template chooser box select Swift file. If you can’t see the Swift file, take help of the screenshot provided above. Press next.

Screen Shot 2014-09-14 at 2.24.46 PM

Type MyCustomButton as file name and create the file.

Screen Shot 2014-09-14 at 2.27.27 PM

Open MyCustomButton from Project Navigator window – if it’s already not opened.

You will see the following code:

import Foundation

First import UIKit as UIButton is a child class of UIKit.

import UIKit

Now, we’ll create MyCustomButton which will be Sub Class of UIButton :

class MyCustomButton: UIButton {

 

}

We’ve to override init(coder aDecoder: NSCoder!)  method and write super.init(coder: aDecoder) at the beginning of the method.

init(coder aDecoder: NSCoder!) {

super.init(coder: aDecoder)

}

Now, let’s add radius to the button corner.  To do so, write the following code inside init(coder aDecoder: NSCoder!) function.

self.layer.cornerRadius = 5.0;

To change the border color and border width, you can use:

self.layer.borderColor = UIColor.redColor().CGColor

self.layer.borderWidth = 1.5

Here I’ve used red color you can use any other colour you like.

Now, lets change the background color of the button. That’s very easy:

self.backgroundColor  = UIColor.blueColor()

However, to change the text color of the button you can’t use anything like: self.titleColor. Instead, use the following line:

self.tintColor = UIColor.whiteColor()

Finally, our whole code will look like :

Now, you’ve to attach this custom class with your button. Let’s do them in 3 steps.

Go to Storyboard and select the button.

From Utility panel select the Identity Inspector.

In the class box Type MyCustomButton

Nothing is changed? No problem, press Command+R (or Product > Run) to run the application on simulator.

Voila, you’re done.

Swift - Button customisation

 

You can download the project from here.