如何以编程方式创建基本的UIButton?


Answers:


1187

这是一个:

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

谢谢!你能告诉我什么是方法吗?
domlao

5
buttonWithType:返回自动释放的UIButton实例
Allyn

261
实用提示:如果您不希望您的按钮在触摸后立即激活,请使用UIControlEventTouchUpInside而不是UIControlEventTouchDown-这将等待用户抬起手指,让他们可以通过拖动来取消选择(在Apple中推荐)人机界面指南)
艾瑞吉塔(Ayreguitar

9
在大多数情况下,我建议使用UIControlEventTouchUpInside。我在某些游戏和音乐播放应用程序(ClefTunes和ClefNotes)中使用了UIControlEventTouchDown,以便触摸立即生成音乐笔记。
mahboudz

45
对于像我这样努力的人来说,请注意-@selector(aMethod :)指的是带有参数的方法。@selector(aMethod)指的是没有参数的方法。如果您的方法签名看起来像-(void)aMethod; 并且您使用@selector(aMethod :),您的应用将崩溃。
乍得·舒尔茨2012年

94
- (void)viewDidLoad {
    [super viewDidLoad];
    [self addMyButton];   // Call add button method on view load
}

- (void)addMyButton{    // Method for creating button, with background image and other properties

    UIButton *playButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
    playButton.frame = CGRectMake(110.0, 360.0, 100.0, 30.0);
    [playButton setTitle:@"Play" forState:UIControlStateNormal];
    playButton.backgroundColor = [UIColor clearColor];
    [playButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal ];
    UIImage *buttonImageNormal = [UIImage imageNamed:@"blueButton.png"];
    UIImage *strechableButtonImageNormal = [buttonImageNormal stretchableImageWithLeftCapWidth:12 topCapHeight:0];
    [playButton setBackgroundImage:strechableButtonImageNormal forState:UIControlStateNormal];
    UIImage *buttonImagePressed = [UIImage imageNamed:@"whiteButton.png"];
    UIImage *strechableButtonImagePressed = [buttonImagePressed stretchableImageWithLeftCapWidth:12 topCapHeight:0];
    [playButton setBackgroundImage:strechableButtonImagePressed forState:UIControlStateHighlighted];
    [playButton addTarget:self action:@selector(playAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:playButton];  
}

// @ sasayins:我已经整理好了代码,可以在viewDidLoad上调用addMyButton方法。
Xorsat

1
谢谢...但是为什么要使用viewController:viewDidLoad?似乎这些东西(设置视图/添加按钮)应该在视图而不是视图控制器中完成?谢谢
Rakka Rage

@rakkarage addMyButton()方法是通用方法,您可以从事件中使用它。
Xorsat 2011年

1
一个比接受的答案好得多的答案,因为它显示了代码的上下文。
Morgan Wilde

在viewDidLoad中初始化视图坐标似乎不是一个好主意(??):stackoverflow.com/questions/17882199/… ???
user2054339 2013年

86

目标C

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及以上

  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(UIColor.blue, 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)")
}

SwiftUI

例如,您从SwiftUI开发人员门户网站逐步获得了限制

import SwiftUI

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

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


        }
    }
}

#if DEBUG
struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
#endif

SWIFT 3:给出错误exped declaration的myButton.setTitle( “你好,点击”)
Xcodian Solangi

@XcodianSolangi-不是myButton.setTitle("Hi, Click")语法,myButton.setTitle("Hi, Click me", for: .normal)我尝试了我的代码我没有遇到任何问题
Anbu.Karthik

我按照您的定义编写,现在我已经在VC和函数中的其他部分中定义了常量
Xcodian Solangi

30

若要以编程方式将按钮添加到控制器的视图,请使用以下命令:

-(void)viewDidLoad
{
   UIButton * btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
   btn.frame = CGRectMake(0, 0, 100, 50);
   [btn setTitle:@"Hello, world!" forState:UIControlStateNormal];
   [self.view addSubview:btn];
}

要添加其中三个,冲洗并重复。


在viewDidLoad中初始化视图坐标似乎不是一个好主意(??):stackoverflow.com/questions/17882199/… ???
user2054339 2013年

3
正确,现在有比2009
Jason

25

在这里,您可以动态创建一个UIButton:

//For button image
UIImage *closebtnimg = [UIImage imageNamed:@"close_btn.png"];
//Custom type button
btnclose = [[UIButton buttonWithType:UIButtonTypeCustom]retain];
//Set frame of button means position
btnclose.frame = CGRectMake(103, 257, 94, 32);
//Button with 0 border so it's shape like image shape
[btnclose.layer setBorderWidth:0];
//Set title of button
[btnclose setTitle:@"CLOSE" forState:UIControlStateNormal];
[btnclose addTarget:self action:@selector(methodname:) forControlEvents:UIControlEventTouchUpInside];
//Font size of title
btnclose.titleLabel.font = [UIFont boldSystemFontOfSize:14];
//Set image of button
[btnclose setBackgroundImage:closebtnimg forState:UIControlStateNormal];

25

来吧,这是2014年!为什么不使用代码块评估分配,因为趋势表明这是未来!

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

哇!

哇!

或者可以通过以下方式完成确切的结果:

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];


8
略高于顶部,但这是一个有趣的新功能。
保罗·索尔特

关键是要炫耀代码块评估并回答问题。令人烦恼的是得到-1的值
约翰·里塞尔瓦托

1
如果您解释为什么代码块评估任务 很重要,
Fahim Parkar

@FahimParkar,问题是如何制作一个按钮,而不是CBE如何以及为什么如此重要。
约翰·里瑟尔瓦托

3
我评论上下文,来吧,2014年!
Fahim Parkar'3

20

'action:@selector(aMethod:)' 像这样写方法:

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

这个对我有用。谢谢。KS。


14

目标C

// 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)
self.view.addSubview(button)

9

尝试使用此代码创建一个按钮,并使用不同的坐标将其重复2次以上,并在按下按钮时调用method(myButtonClick)

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);
}

myString设置为什么?
Doug Null

那是仅作为附加信息作为参数传递的字符串,您也可以使用这种方法-(void)myButtonClick {NSLog(@“您单击按钮”“); },但请确保在调用方法时删除:只需像这样使用[myButton addTarget:self action:@selector(myButtonClick)forControlEvents:UIControlEventTouchUpInside];
ashokdy 2013年

+1用于显示如何设置多个设置,而不仅仅是创建一个按钮。
马特·瓦格纳

7

查看以下代码:

斯威夫特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(UIColor.blue, for: .selected)
btnTest.showsTouchWhenHighlighted = true
view.addSubview(btnTest)

目标C

CGRect frameimg = CGRectMake(15, 46, 55,70);
UIButton  *SelectionButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
SelectionButton.frame=frameimg;
SelectionButton.tag=i;
[SelectionButton setTitle:[SelectionArray objectAtIndex:0] forState:UIControlStateNormal];
[SelectionButton addTarget:self action:@selector(BtnSelected:)
                  forControlEvents:UIControlEventTouchUpInside];
[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];

希望您能使用此代码。


6

您可以将创建者实例放入循环中,并根据需要从数组中动态添加名称。


是的,我尝试了mahboudz,与此同时,我尝试了循环播放。谢谢
domlao

4
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self 
           action:@selector(aMethod:)
 forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(10.0, 100.0, 300.0, 20.0);
[self.view addSubview:button];

4
-(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;

}

并将其添加到视图中:

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

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

3

这也是创建三个按钮的示例。只需移动他们的位置即可。

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];

3

您可以通过此代码创建按钮。

 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];

这是按钮动作方法

 -(void)btnAction
 {
   NSLog(@"button clicked");
 }

2

对于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)
subView.addSubview(btnObject)

2

为了以编程方式创建UIButton,我们可以在目标C和Swift中创建

SWIFT 3

let buttonSwift   = UIButton(type: UIButtonType.system) as UIButton
                      //OR 
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 = UIColor.black
//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
self.view.addSubview(buttonSwift)

UIButton动作方法

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

    //Then do whatever you want to do here

    ........  
}

目标C

UIButton *buttonObjectiveC = [UIButton buttonWithType:UIButtonTypeCustom];
           OR
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动作方法

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

现“输出屏幕截图”为

在此处输入图片说明

在此处输入图片说明


1
-(void)addStuffToView
{
    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];
}

-(void)back
{
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle.....]
}

-(void)viewDidLoad
{
    [super viewDidLoad];
    [self addStuffToView];//adds all items built in this method to the view
}

1

对于Swift 2.2(带有带有新的“选择器”声明的)。

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)
self.view.addSubview(btn)


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

1

您可以在您的ViewDidLoad方法中实现它:

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];

在哪里continuetonext

-(void)continuetonext
{
    GeneratePasswordVC *u = [[GeneratePasswordVC alloc]init];
    [self.navigationController pushViewController:u animated:YES];
}

1

从Swift 3开始,对语法进行了几处更改。

从Swift 3开始,您将按照以下步骤创建基本按钮:

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

这是自早期版本的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

self.view.addSubview(button)

0

尝试一下....

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];
finalPriceBtn.titleLabel.textAlignment=UITextAlignmentLeft;
[imageView addSubview:finalPriceBtn];

希望我能帮上忙。


0
UIButton *custombutton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[custombutton addTarget:self
                 action:@selector(aMethod:)
       forControlEvents:UIControlEventTouchUpInside];
[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];

0

尝试这个:

首先将其写入您的viewcontroller .h文件中

UIButton *btn;

现在,将其写入您的viewcontrollers viewDidLoad的.m文件中。

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];

在view controller的.m文件中将此viewDidLoad方法写入外部

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

0

对于Swift 3(甚至更短的代码)

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 = UIColor.red
button.setBackgroundImage(UIImage(named: "ImageName"), for: UIControlState.normal)
button.setTitle("MyTitle", for: UIControlState.normal)
button.isEnabled = true

func tapButton(sender: UIButton) {

}

0

Swift3版本应该是

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(UIColor.blue, for: .normal)
            myButton.frame = CGRect(x: 20, y: 20, width: 100, height: 40)

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

            return myButton

        }()

0
UIButton *buttonName = [UIButton
buttonWithType:UIButtonTypeRoundedRect];
[buttonName addTarget:self 
    action:@selector(aMethod:)forControlEvents:UIControlEventTouchDown];
[buttonName setTitle:@"Show View" forState:UIControlStateNormal];
.frame = CGRectMake(80.0, 210.0, 160.0, 40.0); [view
addSubview:buttonName];

0

Swift 5 Xcode 10.2中

基本上我们有两种类型的按钮。

1)系统类型按钮

2)自定义类型按钮(在自定义类型按钮中,我们可以为按钮设置背景图片)

而且这两种按钮的控制状态很少 https://developer.apple.com/documentation/uikit/uicontrol/state

重要状态是

1)正常状态

2)选择状态

3)高亮状态

4)禁用状态等...

//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)
self.view.addSubview(button)

//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)
self.view.addSubview(button2)

@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
    }
}

-1
UIButton *btnname = [UIButton buttonWithType:UIButtonTypeRoundedRect];

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

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

[self.view addSubview:btnname];
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.