2012-12-10 15 views
10

Widziałem kilka rozwiązań, z których żaden nie działał dla mojego problemu.Jak programowo przenieść Uibutton. Cel C xCode

Mam UIButton utworzony przez przeciągnięcie/upuszczenie w UIViewController w edytorze scenorys.

Urządzenie UIButton ma gniazdko połączone z plikiem .h dla UIViewController powiązanym z tym widokiem. Jest również syntezowany w pliku .m.

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

Chcę zmienić położenie przycisku podczas pracy w ten sposób;

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

Jednak za każdym razem, gdy spróbuję, przycisk nie chce się ruszyć.

Wszystkie inne funkcje edycji (takie jak setTitle itd.) Są funkcjonalne, ale z jakiegoś powodu ramka nie będzie się poruszać w żądany sposób.

Każdy wgląd/pomoc byłaby doceniana.

+0

Użyj funkcji gest –

+3

Używasz auto-układ? – Zaphod

+0

@Vikas, użytkownik nie przenosi przycisku. Umieszczenie przycisku zależy od wcześniejszych wyborów dokonanych przez niego. xOne, yOne są 2 wartościami int tworzącymi punkt, który zmienia się w oparciu o dokonane wcześniej selekcje. Po prostu chcę móc ustawić ramkę do tych znanych wartości int. – SamBo

Odpowiedz

19

odznacz „Użyj autoLayout” w Inspektorze plików ..

4

Zastąp swój kod poniższym, który zawiera kod do usunięcia maski automatycznej zmiany rozmiaru.

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

Doceń swoją odpowiedź. Próbowałem, nie działał. – SamBo

+0

Czy NSLog xOne, yOne i sprawdź, co to jest? –

7

.h plików

#import <UIKit/UIKit.h> 

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

@end 

.m plik

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

}

Kod ten przycisk przesuwa się z jednego punktu do drugiego.