Come spostare UIButton a livello di programmazione. Objective-C, Xcode

Ho visto alcune soluzioni, nessuna delle quali hanno lavorato per il mio problema.

Ho un UIButton creato semplicemente trascinare e rilasciare il UIViewController in Storyboard editor.

Il UIButton ha una presa di corrente collegato al .h file per il UIViewController associata a quella vista. È anche Sintetizzato in .m file.

@property (strong, nonatomic) IBOutlet UIButton *answerButton;

Voglio cambiare la posizione del pulsante durante la fase di esecuzione come questa;

CGRect btFrame = answerButton.frame;
btFrame.origin.x = xOne;
btFrame.origin.y = yOne;
answerButton.frame = btFrame;

Però ogni volta che provo questo, il pulsante si rifiuta di muoversi.

Tutte le altre funzioni di editing (come setTitle ecc) sono funzionali, ma per qualche motivo il telaio non spostare come voglio.

  • Utilizzare il gesto funzionalità
  • Stai usando la configurazione automatica?
  • l’utente non è in movimento il pulsante. Il posizionamento del pulsante è determinato da alcune scelte fatte in precedenza da loro. xOne, yOne sono 2 valori di int creazione di un punto che viene modificato in base alle scelte fatte in precedenza. Voglio solo essere in grado di impostare il frame per i valori di int.
  • Assicurarsi che non avete layout automatico abilitato nel tuo storyboard. Vedi questa risposta se hai bisogno di aiuto per capire se è abilitato e spegnere.
  • Ha funzionato! La ringrazio molto Rob & Zaphod!
InformationsquelleAutor SamBo | 2012-12-10



3 Replies
  1. 7

    .h file

        #import <UIKit/UIKit.h>
    
    @interface ViewController : UIViewController{
        IBOutlet UIButton *theButton;
    }
    @property(nonatomic, strong) IBOutlet UIButton *theButton;
    -(IBAction)moveTheButton:(id)sender;
    
    @end

    .m file

    -(IBAction)moveTheButton:(id)sender{
    CGRect btFrame = theButton.frame;
    btFrame.origin.x = 90;
    btFrame.origin.y = 150;
    theButton.frame = btFrame;

    }

    Questo codice si sposta il pulsante da un punto all’altro.

  2. 4

    Sostituire il codice qui di seguito, che include il codice per rimuovere l’auto ridimensionamento maschera.

    CGRect btFrame = answerButton.frame;
    btFrame.origin.x = xOne;
    btFrame.origin.y = yOne;
    answerButton.autoresizingMask = UIViewAutoresizingNone;
    answerButton.frame = btFrame;
    • Apprezzo la tua risposta. Provato, non ha funzionato.
    • Hai NSLog xOne, yOne e controllare di cosa si tratta?

Lascia un commento