2012-12-10 6 views
10

Ich habe einige Lösungen gesehen, von denen keine für mein Problem funktioniert hat.Wie UIButton programmatisch verschoben wird. Objective C xCode

Ich habe eine UIButton erstellt durch einfaches Drag/Drop in den UIViewController im Storyboard-Editor.

Die UIButton hat einen Ausgang, der mit der .h-Datei für die dieser Ansicht zugeordnete UIViewController verknüpft ist. Es ist auch in der .m Datei synthetisiert.

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

Ich möchte die Position der Schaltfläche während der Laufzeit wie folgt ändern;

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

Immer wenn ich dies versuche, weigert sich der Knopf zu bewegen.

Alle anderen Bearbeitungsfunktionen (wie setTitle usw.) sind funktional, aber aus irgendeinem Grund bewegt sich der Rahmen nicht wie ich es will.

Jede Einsicht/Hilfe wäre willkommen.

+0

Verwenden Sie die Geste Funktionalität –

+3

Sind Sie Auto-Layout verwenden? – Zaphod

+0

@Vikas, der Benutzer bewegt nicht die Schaltfläche. Die Platzierung der Schaltfläche wird durch einige zuvor von ihnen getroffene Auswahl bestimmt. xOne, yOne sind 2 int-Werte, die einen Punkt erzeugen, der basierend auf zuvor getroffenen Auswahlen geändert wird. Ich möchte nur einen Frame auf diese bekannten int-Werte setzen können. – SamBo

Antwort

19

Deaktivieren Sie einfach "Use Autolayout" im Dateiinspektor ..

4

Ersetzen Sie den Code durch den folgenden Code, der den Code zum Entfernen der automatischen Größenänderungsmaske enthält.

CGRect btFrame = answerButton.frame; 
btFrame.origin.x = xOne; 
btFrame.origin.y = yOne; 
answerButton.autoresizingMask = UIViewAutoresizingNone; 
answerButton.frame = btFrame; 
+3

Schätzen Sie Ihre Antwort. Versuchte es, hat nicht funktioniert. – SamBo

+0

Haben Sie NSLog xOne, yOne und überprüfen Sie, was es ist? –

7

.h-Datei

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController{ 
    IBOutlet UIButton *theButton; 
} 
@property(nonatomic, strong) IBOutlet UIButton *theButton; 
-(IBAction)moveTheButton:(id)sender; 

@end 

.m-Datei

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

}

Dieser Code auf die Schaltfläche von einem Punkt zum anderen bewegt.

Verwandte Themen