571 Stimmen

Wie kann ich eine einfache UIButton programmatisch erstellen?

Wie kann ich eine grundlegende UIButton programmatisch? Zum Beispiel in meinem View-Controller, wenn die Ausführung der viewDidLoad Methode, drei UIButton s werden dynamisch erstellt und ihr Layout oder ihre Eigenschaften werden festgelegt.

0 Stimmen

webindream.com/einfuegen-uibutton-programmatisch-in-swift hat ein gutes Tutorial, um uibutton programmatisch hinzuzufügen

0 Stimmen

UIButton in Swift erstellen, stackoverflow.com/questions/24102191/

1213voto

mahboudz Punkte 39008

Hier ist eine:

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

0 Stimmen

Danke! können Sie mir erklären, was aMethod ist?

0 Stimmen

AMethod ist die von Ihnen definierte Methode, die auf den Tastendruck reagieren soll. (Bei mir) Sie nimmt ein id-Objekt.

0 Stimmen

Wenn die Schaltfläche betätigt wird (gedrückt und gehalten oder gedrückt und losgelassen oder durchgezogen, usw.), soll etwas passieren, richtig? Der Code, der aufgerufen werden soll, ist normalerweise eine Methode wie: - (void) myButtonWasPressed oder - (void) myButtonWasPressed:(id) whichButton Das ist es, was ich meine.

101voto

Anbu.Karthik Punkte 79951

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

Schnell

    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 und höher

  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

Die schrittweise Umsetzung erhalten Sie zum Beispiel von SwiftUI-Entwicklerportal

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

0 Stimmen

Swift 3: ergibt Fehler exped declaration bei myButton.setTitle("Hallo, Klick")

0 Stimmen

@XcodianSolangi -- ist nicht myButton.setTitle("Hi, Click") die Syntax lautet myButton.setTitle("Hi, Click me", for: .normal) Ich habe meinen Code ausprobiert und bin auf keine Probleme gestoßen.

0 Stimmen

Ich schreibe es so, wie Sie es definiert haben, jetzt habe ich eine Konstante in VC und andere Teile innerhalb der Funktion definiert

96voto

Xorsat Punkte 2378
- (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];  
}

0 Stimmen

@ sasayins: Ich habe den Code angeordnet, können Sie addMyButton Methode auf viewDidLoad aufrufen.

1 Stimmen

Danke... aber warum verwenden viewController:viewDidLoad? es scheint, wie dieses Zeug (Einrichten der Ansicht/hinzufügen von Schaltflächen) sollte in der Ansicht statt der View-Controller getan werden? danke

0 Stimmen

@rakkarage Die addMyButton()-Methode ist eine generische Methode, die Sie über ein Ereignis verwenden können.

32voto

Jason Punkte 27030

Um der Ansicht Ihres Controllers eine Schaltfläche programmatisch hinzuzufügen, gehen Sie wie folgt vor:

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

Um drei von ihnen hinzuzufügen, spülen und wiederholen.

0 Stimmen

Es scheint, dass es keine gute Idee ist (??), die Initialisierung der Koordinaten der Ansicht in viewDidLoad durchzuführen: stackoverflow.com/questions/17882199/ ???

3 Stimmen

Richtig, es gibt heute bessere Ansätze als 2009.

27voto

Birju Punkte 1132

Hier können Sie dynamisch einen UIButton erstellen:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X