By domlao

2009-09-04 11:44:37 8 Comments

How can I create a basic UIButton programmatically? For example in my view controller, when executing the viewDidLoad method, three UIButtons will be created dynamically and its layout or properties are set.


@Anbu.Karthik 2013-10-18 13:13:21


UIButton *but= [UIButton buttonWithType:UIButtonTypeRoundedRect];
[but addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
 [but setFrame:CGRectMake(52, 252, 215, 40)];
[but setTitle:@"Login" forState:UIControlStateNormal];
[but setExclusiveTouch:YES];

 // if you like to add backgroundImage else no need
   [but setbackgroundImage:[UIImage imageNamed:@"XXX.png"] forState:UIControlStateNormal];

[self.view addSubview:but];

-(void) buttonClicked:(UIButton*)sender
NSLog(@"you clicked on button %@", sender.tag);


    let myButton = UIButton() // if you want to set the type use like UIButton(type: .RoundedRect) or UIButton(type: .Custom)
    myButton.setTitle("Hai Touch Me", forState: .Normal)
    myButton.setTitleColor(UIColor.blueColor(), forState: .Normal)
    myButton.frame = CGRectMake(15, 50, 300, 500)
    myButton.addTarget(self, action: "pressedAction:", forControlEvents: .TouchUpInside)

    self.view.addSubview( myButton)

func pressedAction(sender: UIButton!) {
   // do your stuff here 
  NSLog("you clicked on button %@", sender.tag)

Swift3 and above

  let myButton = UIButton() // if you want to set the type use like UIButton(type: .RoundedRect) or UIButton(type: .Custom)
    myButton.setTitle("Hi, Click me", for: .normal)
    myButton.setTitleColor(, for: .normal)
    myButton.frame = CGRect(x: 15, y: 50, width: 300, height: 500)

    myButton.addTarget(self, action: #selector(pressedAction(_:)), for: .touchUpInside)
    self.view.addSubview( myButton)

func pressedAction(_ sender: UIButton) {
   // do your stuff here 
  print("you clicked on button \(sender.tag)")


for example you get the step by step implemntation from SwiftUI Developer portal

import SwiftUI

struct ContentView : View {
    var body: some View {
        VStack {

            Text("Target Color Black")
             Button(action: { 
                 /* handle button action here */ })
         Text("your Button Name")
                        .shadow(radius: 5)
                        .clipShape(RoundedRectangle(cornerRadius: 5))


struct ContentView_Previews : PreviewProvider {
    static var previews: some View {

@Xcodian Solangi 2017-12-20 09:14:07

swift 3: gives error exped declaration at myButton.setTitle("Hi, Click")

@Anbu.Karthik 2017-12-20 09:24:32

@XcodianSolangi -- is not myButton.setTitle("Hi, Click") the syntax is myButton.setTitle("Hi, Click me", for: .normal) i tried my code i am not faced any issues

@Xcodian Solangi 2017-12-20 10:01:40

i write as it as you defined, now i have defined constant in VC and other parts inside the function

@iOS 2019-01-20 06:35:30

In Swift 5 and Xcode 10.2

Basically we have two types of buttons.

1) System type button

2) Custom type button (In custom type button we can set background image for button)

And these two types of buttons has few control states

Important states are

1) Normal state

2) Selected state

3) Highlighted state

4) Disabled state etc...

//For system type button
let button = UIButton(type: .system)
button.frame = CGRect(x: 100, y: 250, width: 100, height: 50)
//  button.backgroundColor = .blue
button.setTitle("Button", for: .normal)
button.setTitleColor(.white, for: .normal)
button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 13.0)
button.titleLabel?.textAlignment = .center//Text alighment center
button.titleLabel?.numberOfLines = 0//To display multiple lines in UIButton
button.titleLabel?.lineBreakMode = .byWordWrapping//By word wrapping
button.tag = 1//To assign tag value
button.btnProperties()//Call UIButton properties from extension function
button.addTarget(self, action:#selector(self.buttonClicked), for: .touchUpInside)

//For custom type button (add image to your button)
let button2 = UIButton(type: .custom)
button2.frame = CGRect(x: 100, y: 400, width: 100, height: 50)
//        button2.backgroundColor = .blue
button2.setImage(UIImage.init(named: "img.png"), for: .normal)
button2.tag = 2
button2.btnProperties()//Call UIButton properties from extension function
button2.addTarget(self, action:#selector(self.buttonClicked), for: .touchUpInside)

@objc func buttonClicked(sender:UIButton) {
    print("Button \(sender.tag) clicked")

//You can add UIButton properties using extension
extension UIButton {
    func btnProperties() {
        layer.cornerRadius = 10//Set button corner radious
        clipsToBounds = true
        backgroundColor = .blue//Set background colour
        //titleLabel?.textAlignment = .center//add properties like this

@Darshan Kunjadiya 2014-01-03 10:39:27

Check out this code:

Swift 4.2

let frameimg = CGRect(x: 15, y: 46, width: 55, height: 70)
let btnTest = UIButton(type: .roundedRect)
btnTest.frame = frameimg
btnTest.tag = 11
btnTest.setTitle("Test Button", for: .normal)
btnTest.addTarget(self, action: #selector(self.buttonAction(sender:)), for: .touchUpInside)
btnTest.titleLabel?.font = UIFont.boldSystemFont(ofSize: 12.0)
btnTest.titleLabel?.lineBreakMode = .byWordWrapping
btnTest.titleLabel?.numberOfLines = 2
btnTest.titleLabel?.textAlignment = .center
btnTest.setTitleColor(UIColor.gray, for: .normal)
btnTest.setTitleColor(, for: .selected)
btnTest.showsTouchWhenHighlighted = true

Objective C

CGRect frameimg = CGRectMake(15, 46, 55,70);
UIButton  *SelectionButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[SelectionButton setTitle:[SelectionArray objectAtIndex:0] forState:UIControlStateNormal];
[SelectionButton addTarget:self action:@selector(BtnSelected:)
[SelectionButton.titleLabel setFont:[UIFont boldSystemFontOfSize:12.0]];
SelectionButton.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
SelectionButton.titleLabel.numberOfLines = 2;
SelectionButton.titleLabel.textAlignment = NSTextAlignmentCenter;
[SelectionButton setTitleColor:[UIColor grayColor] forState:(UIControlStateNormal)];
[SelectionButton setTitleColor:[UIColor blueColor] forState:UIControlStateSelected];
[SelectionButton setShowsTouchWhenHighlighted:YES];
[self.view addSubview:SelectionButton];

I hope you this code works for you.

@Nilesh Parmar 2015-06-09 13:47:55

UIButton *buttonName = [UIButton
[buttonName addTarget:self 
[buttonName setTitle:@"Show View" forState:UIControlStateNormal];
.frame = CGRectMake(80.0, 210.0, 160.0, 40.0); [view

@John Riselvato 2014-01-08 16:29:37

Come on, it's 2014! Why isn't code block evaluation assignment being used yet, as trends show it's the future!

UIButton* button = ({
    //initialize button with frame
    UIButton* button = [[UIButton alloc] initWithFrame:({
        CGRect frame = CGRectMake(10.0, 10.0, 200.0, 75.0);
    //set button background color
    [button setBackgroundColor:({
        UIColor* color = [UIColor colorWithRed:1.0 green:1.0 blue:0.0 alpha:1.0];
    //set button title for state
    [button setTitle:({
        NSString* string = [NSString stringWithFormat:@"title words"];
    }) forState:({
        UIControlState state = UIControlStateNormal;
    //set selector
    [button addTarget:self action:({
        SEL select = @selector(method:);
    }) forControlEvents:({
        UIControlEvents event = UIControlEventTouchUpInside;
    //return button
[self.view addSubview:button];



Or the exact results can be accomplished as such:

UIButton* button = [[UIButton alloc] initWithFrame:CGRectMake(10.0, 10.0, 200.0, 75.0)];
[button setBackgroundColor:[UIColor colorWithRed:1.0 green:1.0 blue:0.0 alpha:1.0]];
[button setTitle:@"title words" forState:UIControlStateNormal];
[button addTarget:self action:@selector(method:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];

@Paul Solt 2014-01-23 05:52:22

A little over the top, but it's an interesting new feature.

@John Riselvato 2014-01-23 14:20:40

That's the point, to show off code block evaluation and ANSWER the question. It's annoying this is getting -1's...

@StuartM 2014-01-23 17:26:05

Levelled it out...

@Fahim Parkar 2016-03-01 05:53:20

you will have more upvotes if you give explanation for why code block evaluation assignment is important...

@John Riselvato 2016-03-01 15:53:10

@FahimParkar, the question is how to make a button not how and why CBE is important.

@Fahim Parkar 2016-03-02 05:01:50

I comment with context to Come on, it's 2014!

@user3182143 2015-10-23 06:50:47

For creating UIButton programmatically we can create in both objective c and swift


let buttonSwift   = UIButton(type: UIButtonType.system) as UIButton
let buttonSwift   = UIButton(type: UIButtonType.Custom) as UIButton
//Set Frame for Button
buttonSwift.frame = CGRect(x: 100, y: 100, width: 200, height: 100)
//Set title for button
buttonSwift.setTitle("ClickMe", for: .normal)
//If you want to set color for button title
buttonSwift.setTitleColor(UIColor.white, for: .normal)
//If you want to set Background color for button
buttonSwift.backgroundColor =
//If you want to set tag for button
buttonSwift.tag = 0
//If you want to add or set image for button
let image = UIImage(named: "YourImageName") as UIImage?
buttonSwift.setImage(image, for: .normal)
//If you want to add or set Background image for button
buttonSwift.setBackgroundImage(image, for: .normal)
//Add action for button
buttonSwift.addTarget(self, action: #selector(actionPressMe), for:.touchUpInside)
//Add button as SubView to Super View

UIButton Action Method

func actionPressMe(sender: UIButton!) 
    NSLog("Clicked button tag is %@", sender.tag)
    print("Clicked button tag is \(sender.tag)")

    //Then do whatever you want to do here



UIButton *buttonObjectiveC = [UIButton buttonWithType:UIButtonTypeCustom];
UIButton *buttonObjectiveC = [UIButton buttonWithType:UIButtonTypeSystem];
buttonObjectiveC.frame = CGRectMake(200, 100, 200, 100);
//Set title for button
[buttonObjectiveC setTitle:@"ClickMe" forState:UIControlStateNormal];
//If you want to set color for button title
[buttonObjectiveC setTitleColor:[UIColor  whiteColor] forState: UIControlStateNormal];
//If you want to set Background color for button
[buttonObjectiveC setBackgroundColor:[UIColor blackColor]];
//If you want to set tag for button
buttonSwift.tag = 0;
//If you want to add or set image for button
UIImage *image = [UIImage imageNamed:@"YourImageName"];
[buttonObjectiveC setImage:image forState:UIControlStateNormal];
//If you want to add or set Background image for button
[buttonObjectiveC setBackgroundImage:image forState:UIControlStateNormal];
//Add action for button
[buttonObjectiveC addTarget:self action:@selector(actionPressMe:)forControlEvents:UIControlEventTouchUpInside];
//Add button as SubView to Super View
[self.view addSubview:buttonObjectiveC];

UIButton Action Method

- (void)actionPressMe:(UIButton *)sender 
    NSLog(@"Clicked button tag is %@",sender.tag);
    //Then do whatever you want to do here

Output Screenshot is

enter image description here

enter image description here

@Jacky 2016-12-29 11:29:26

Swift3 version should be

let myButton:UIButton = {
            let myButton = UIButton() // if you want to set the type use like UIButton(type: .RoundedRect) or UIButton(type: .Custom)
            myButton.setTitle("Hai Touch Me", for: .normal)
            myButton.setTitleColor(, for: .normal)
            myButton.frame = CGRect(x: 20, y: 20, width: 100, height: 40)

            myButton.addTarget(self, action: #selector(ViewController.pressedAction(_:)), for: .touchUpInside)

            return myButton


@GJZ 2016-11-14 17:21:57

As of Swift 3, several changes have been made to the syntax.

Here is how you would go about creating a basic button as of Swift 3:

    let button = UIButton(type: UIButtonType.system) as UIButton
    button.frame = CGRect(x: 100, y: 100, width: 100, height: 50)
    button.backgroundColor =
    button.setTitle("Example Button", for: UIControlState.normal)

Here are the changes that have been made since previous versions of Swift:

let button = UIButton(type: UIButtonType.System) as UIButton

// system no longer capitalised

button.frame = CGRectMake(100, 100, 100, 50)

// CGRectMake has been removed as of Swift 3

button.backgroundColor = UIColor.greenColor()

// greenColor replaced with green

button.setTitle("Example Button", forState: UIControlState.Normal)

// normal is no longer capitalised


@Ved Rauniyar 2016-10-14 04:44:14

UIButton *addProject = [UIButton buttonWithType: UIButtonTypeRoundedRect];
addProject.frame = CGRectMake(210, 285, 100, 18);
[addProject setTitle:@"Show View" forState:UIControlStateNormal];
[addProject addTarget:self action:@selector(addProjectPressed:) forControlEvents:UIControlEventTouchUpInside];
[_scrollView addSubview:addProject];

@pedrouan 2016-09-04 16:25:54

For Swift 3 (even shorter code)

let button = UIButton(type: UIButtonType.custom)
button.frame = CGRect(x: 0, y: 0, width: 200.0, height: 40.0)
button.addTarget(nil, action: #selector(tapButton(_:)), for: UIControlEvents.touchUpInside)
button.tintColor = UIColor.white
button.backgroundColor =
button.setBackgroundImage(UIImage(named: "ImageName"), for: UIControlState.normal)
button.setTitle("MyTitle", for: UIControlState.normal)
button.isEnabled = true

func tapButton(sender: UIButton) {


@Abhinandan Pratap 2015-10-30 06:07:03

You can implement it in your ViewDidLoad Method:

continuebtn = [[UIButton alloc]initWithFrame:CGRectMake(10, 100, view1.frame.size.width-20, 40)];
    [continuebtn setBackgroundColor:[UIColor grayColor]];
    [continuebtn setTitle:@"Continue" forState:UIControlStateNormal];
    continuebtn.layer.cornerRadius = 10;
    continuebtn.layer.borderWidth =1.0;
    continuebtn.layer.borderColor = [UIColor blackColor].CGColor;
    [continuebtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [continuebtn addTarget:self action:@selector(continuetonext) forControlEvents:UIControlEventTouchUpInside];
    [view1 addSubview:continuebtn];

Where continuetonext is:

    GeneratePasswordVC *u = [[GeneratePasswordVC alloc]init];
    [self.navigationController pushViewController:u animated:YES];

@Pavle Mijatovic 2016-05-30 13:55:08

For Swift 2.2 (with the with the new "selector" declaration).

let btn = UIButton(type: UIButtonType.System) as UIButton
btn.frame = CGRectMake(0, 0, 100, 20) // set any frame you want
btn.setTitle("MyAction", forState: UIControlState.Normal)
btn.addTarget(self, action: #selector(MyClass.myAction(_:)), forControlEvents: UIControlEvents.TouchUpInside)

func myAction(sender:UIButton!){
  // Some action 

@Nirbhay 2016-04-21 12:19:28

UIButton *saveLibrary=[UIButton buttonWithType:UIButtonTypeCustom];

[saveLibrary setTitle:@"Library" forState:UIControlStateNormal];

[saveLibrary setBackgroundColor:[UIColor redColor]];

[saveLibrary addTarget:self 
action:@selector(saveOnGalleryButtonIsPressed) forControlEvents:UIControlEventTouchUpInside];

[saveLibrary setImage:[UIImage imageWithContentsOfFile:[[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/library225.png"]]forState:UIControlStateNormal];

saveLibrary.frame=CGRectMake(323, 15, 75, 75);  

[self.view addSubview:saveLibrary];

@Himanshu padia 2012-09-11 06:09:24


// Create the Button with RoundedRect type
UIButton *mybutton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
// instend of "Click Me" you can write your own message/Label
[mybutton setTitle:@"Click Me" forState:UIControlStateNormal];
// create the Rectangle Frame with specified size
mybutton.frame = CGRectMake(10, 10, 300, 140); // x,y,width,height    [self.view addSubview:mybutton];// add button to your view.


let button   = UIButton(type: UIButtonType.System) as UIButton
button.frame = CGRectMake(100, 100, 100, 50)
button.backgroundColor = UIColor.greenColor()
button.setTitle("Test Button", forState: UIControlState.Normal)

@Suraj Sonawane 2015-12-02 12:36:02

For Swift 2.0:

let btnObject : UIButton  = UIButton() 
btnObject.frame = CGRect(x: 8, y: 89, width: 70, height: 22)

btnObject.titleLabel?.font = UIFont(name: "Helvetica Neue", size: 13)
btnObject.titleLabel?.textColor = UIColor.whiteColor()
btnObject.backgroundColor = UIColor(red: 189/255, green: 176/255, blue: 0/255, alpha: 1)
btnObject.titleLabel?.textAlignment = NSTextAlignment.Center
btnObject.addTarget(self, action: "btnbtnObjectClick:", forControlEvents: UIControlEvents.TouchUpInside)

@iosDev 2016-01-14 07:39:00

UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];

[button setTitle:@"Click" forState:UIControlStateNormal];

[button setTitleColor:[UIColor blackColor]forState:UIControlStateNormal];

button.frame=CGRectMake(self.view.frame.origin.x+10,self.view.frame.size.height/2, self.view.frame.size.width-20, self.view.frame.size.height-500);

 button.titleLabel.font=[UIFont fontWithName:@"Helvetica" size:20];

[button addTarget:selfaction:@selector(aMethod)forControlEvents:UIControlEventTouchUpInside];

[button setBackgroundColor:[UIColor grayColor]];

[self.view addSubview:button];

@mahboudz 2009-09-04 11:51:53

Here's one:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self 
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[view addSubview:button];

@domlao 2009-09-04 12:43:17

Thanks! can you explain to me what is aMethod?

@John Smith 2009-09-04 16:49:01

aMethod is your own defined method which will respond to the button press. (For me)It takes an id object.

@mahboudz 2009-09-04 19:49:21

When the button is manipulated (pressed and held down, or pressed and released or dragged through, etc) you want something to happen, right? The code that you want called is usually a method like: - (void) myButtonWasPressed or - (void) myButtonWasPressed:(id) whichButton That's what I am talking about.

@David 2010-07-09 11:05:44

The aMethod is kinda like and IBaction that is called when the button is tapped.

@Casey Flynn 2011-04-13 21:35:09

You don't need [UIButton alloc] to reserve memory? Or does buttonWithType: handle this?

@Allyn 2011-04-14 21:05:11

buttonWithType: returns an autoreleased instance of UIButton

@ayreguitar 2011-07-29 15:33:53

Handy Tip: If you don't want your button to activate as soon as you touch it, use UIControlEventTouchUpInside instead of UIControlEventTouchDown - this will wait for the user to lift their finger, giving them the option of cancelling by dragging away (recommended in Apple Human Interface Guidelines)

@mahboudz 2011-09-30 17:45:29

buttonWithType is cerated as autoreleased, but then when -addSubview is called, the button is retained until it is removed from the view.

@mahboudz 2011-09-30 17:47:03

I do recommend using UIControlEventTouchUpInside for most cases. I have used UIControlEventTouchDown in some games and music playing apps (ClefTunes and ClefNotes) so that the touch immediately generates music notes.

@Chad Schultz 2012-10-16 17:31:44

Note for the people like me that struggled with [email protected](aMethod:) refers to a method with an argument. @selector(aMethod) refers to a method with no argument. If your method signature looks like -(void) aMethod; and you use @selector(aMethod:), your app will crash.

@Paul Solt 2014-04-03 15:41:59

On iOS 7.0 you may want to customize the button more. I have a iOS 7.0 UIButton code and animations to show UIButton variations.

@icemelon 2014-09-29 09:45:47

UIButtonTypeRoundedRect is deprecated. It is equal to UIButtonTypeSystem

@krushnsinh 2015-05-27 14:55:45

try this:

first write this in your .h file of viewcontroller

UIButton *btn;

Now write this in your .m file of viewcontrollers viewDidLoad.

btn=[[UIButton alloc]initWithFrame:CGRectMake(50, 20, 30, 30)];
[btn setBackgroundColor:[UIColor orangeColor]];
[btn setTitle: @"My Button" forState:UIControlStateNormal];
[btn setTitleColor: [UIColor blueVolor] forState:UIControlStateNormal];
[btn.layer setBorderWidth:1.0f];
[btn.layer setBorderColor:[UIColor BlueVolor].CGColor];
//adding action programatically
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];

write this outside viewDidLoad method in .m file of your view controller

- (IBAction)btnClicked:(id)sender
  //Write a code you want to execute on buttons click event

@TomG103 2014-06-03 21:43:56

    UIButton *aButton = [[UIButton alloc] initWithFrame:CGRectMake(20, 20, 20, 20)]; //(x, y, width, height of button on screen
    [aButton setTitle:@"Button" forState:UIControlStateNormal];//puts the text on the button
    aButton.titleLabel.font = somefont;//sets the font if one is already stated
    aButton.titleLabel.font = [UIFont fontWithName:@"Arial-MT" size:12];//sets the font type and size
    [aButton addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];//see back method below
    [aButton setBackgroundImage:[UIImage imageNamed:@"someImage.png"] forState:UIControlStateNormal];//sets the image of the button
    [self.view addSubview:back];

    UIAlertView *alert = [[UIAlertView alloc]initWithTitle.....]

    [super viewDidLoad];
    [self addStuffToView];//adds all items built in this method to the view

@Adam Libonatti-Roche 2009-09-04 11:58:45

You can just put the creator instance within a loop and dynamically add names from an array if you so wish.

@domlao 2010-03-02 23:31:41

yup i tried mahboudz, and at the same time, i tried the looping. thanks

@Mohit 2014-03-01 05:25:59

UIButton * tmpBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[tmpBtn addTarget:self action:@selector(clearCart:) forControlEvents:UIControlEventTouchUpInside];
tmpBtn.tag = k;
tmpBtn.frame = CGRectMake(45, 0, 15, 15);
[tmpBtn setBackgroundImage:[UIImage imageNamed:@"CloseButton.png"] forState:UIControlStateNormal];
[self.view addSubview:tmpBtn];

@Vivek Yadav 2014-02-07 12:56:44

You can create button by this code.

 UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
 [btn addTarget:self action:@selector(btnAction) forControlEvents:UIControlEventTouchDragInside];
 [btn setTitle:@"click button" forState:UIControlStateNormal];
  btn.frame = CGRectMake(50, 100, 80, 40);
  [self.view addSubview:btn];

Here is the button action method

   NSLog(@"button clicked");

@HRN 2013-11-20 07:33:56

UIButton *btnname = [UIButton buttonWithType:UIButtonTypeRoundedRect];

[btnname setTitle:@"Click Me" forState:UIControlStateNormal];

btnname.frame = CGRectMake(10, 10, 100, 140);

[self.view addSubview:btnname];

@JCP Chandran 2013-12-31 10:58:13

UIButton *custombutton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[custombutton addTarget:self
[custombutton setTitle:@"Click" forState:UIControlStateNormal];
custombutton.frame = CGRectMake(80.0, 110.0, 160.0, 40.0);
custombutton.titleLabel.textColor = [UIColor colorWithRed: 2.0f/255.0f green: 155.0f/255.0f blue: 213.0f/255.0f  alpha:1];
 [custombutton setImage:[UIImage imageNamed:@"hh.png"] forState:UIControlStateNormal];
 [view addSubview:custombutton];

@Rob O. 2013-10-07 07:03:00

This is an example as well to create three buttons. Just move their location.

UIImage *buttonOff = [UIImage imageNamed:@"crysBallNorm.png"];
UIImage *buttonOn = [UIImage imageNamed:@"crysBallHigh.png"];

UIButton *predictButton = [UIButton alloc];
predictButton = [UIButton buttonWithType:UIButtonTypeCustom];
predictButton.frame = CGRectMake(180.0, 510.0, 120.0, 30.0);
[predictButton setBackgroundImage:buttonOff forState:UIControlStateNormal];
[predictButton setBackgroundImage:buttonOn forState:UIControlStateHighlighted];
[predictButton setTitle:@"Predict" forState:UIControlStateNormal];
[predictButton setTitleColor:[UIColor purpleColor] forState:UIControlStateNormal];
[predictButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:predictButton];

@user2625094 2013-07-27 07:20:07

'action:@selector(aMethod:)' write method like this :

- (void)aMethod:(UIButton*)button
         NSLog(@"Button  clicked.");

It works for me. Thanks. KS.

@smoothumut 2015-01-20 14:11:19

I was looking for this , thanks a lot

@ashokdy 2013-06-27 09:09:52

try this code to create a button and repeat it for 2 more times with different coordinates and the method(myButtonClick) is called when the button is pressed

UIButton *editButton = [UIButton buttonWithType: UIButtonTypeCustom];
editButton.frame = CGRectMake(0, 0, width, height);
[editButton setBackgroundImage: editButtonImage forState: UIControlStateNormal];
[myButton addTarget:self action:@selector(myButtonClick:)    forControlEvents:UIControlEventTouchUpInside]; 
editButton.adjustsImageWhenHighlighted = YES;
editButton.titleLabel.text = @"Edit";
editButton.titleLabel.textColor = [UIColor whiteColor];
editButton.titleLabel.textAlignment = UITextAlignmentCenter;
editButton.titleLabel.font = [UIFont fontWithName: @"Helvetica" size: 14];
[self.view addSubview: editButton];

-(void) myButtonClick:(NSString *)myString{

   NSLog(@"you clicked on button %@", myString);

@Doug Null 2013-08-15 14:58:49

What is myString set to?

@ashokdy 2013-08-15 15:16:05

that is the string to pass as a parameter just for additional info, you can also use that method like this -(void) myButtonClick{ NSLog(@"you clicked on button"); } but be sure that while calling the method remove the : just use like this [myButton addTarget:self action:@selector(myButtonClick) forControlEvents:UIControlEventTouchUpInside];

@Matt Wagner 2014-03-21 01:09:21

+1 for showing how to set multiple settings instead of just creating a button.

@ashokdy 2014-03-25 07:06:58

thnQ @MattWagner

@Mutawe 2013-05-08 13:14:58

-(UIButton *)addButton:(NSString *)title :(CGRect)frame : (SEL)selector :(UIImage *)image :(int)tag{

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = frame;
[btn addTarget:self action:selector forControlEvents:UIControlEventTouchUpInside];
[btn setTitle:title forState:UIControlStateNormal];
[btn setImage:image forState:UIControlStateNormal];
btn.backgroundColor = [UIColor clearColor];
btn.tag = tag;

return btn;


and you can add it to the view:

[self.view addSubview:[self addButton:nil :self.view.frame :@selector(btnAction:) :[UIImage imageNamed:@"img.png"] :1]];

@divyam shukla 2013-05-04 14:38:17

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self 
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[view addSubview:button];

@Chirag Pipaliya 2013-04-27 10:10:43

Try it....

UIButton *finalPriceBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];
finalPriceBtn.frame=CGRectMake(260, 25, 45, 15);
[finalPriceBtn addTarget:self action:@selector(goBtnClk:) forControlEvents:UIControlEventTouchUpInside];
finalPriceBtn.titleLabel.font=[UIFont systemFontOfSize:12];
[finalPriceBtn setTitle:[NSString stringWithFormat:@"$%.2f",tempVal] forState:UIControlStateNormal];
finalPriceBtn.titleLabel.textColor = [UIColor colorWithRed: 2.0f/255.0f green: 155.0f/255.0f blue: 213.0f/255.0f  alpha:1];
[imageView addSubview:finalPriceBtn];

Hope i helped.

Related Questions

Sponsored Content

16 Answered Questions

[SOLVED] Set UIButton title UILabel font size programmatically

40 Answered Questions

[SOLVED] How to find topmost view controller on iOS

11 Answered Questions

[SOLVED] How to set the title of UIButton as left alignment?

  • 2010-05-04 11:56:19
  • Madan Mohan
  • 192721 View
  • 444 Score
  • 11 Answer
  • Tags:   objective-c uibutton

6 Answered Questions

[SOLVED] UIView frame, bounds and center

3 Answered Questions

[SOLVED] Swift : Programatically Create a UIButton with Some Specific Font And Size

  • 2016-09-22 13:31:27
  • Nil Rathod
  • 609 View
  • -3 Score
  • 3 Answer
  • Tags:   ios swift uibutton

1 Answered Questions

4 Answered Questions

1 Answered Questions

[SOLVED] Passing selector to a custom method to create UIButton programmatically

2 Answered Questions

Sponsored Content