Как перемещать UIButton программно. Objective-C Xcode

Я видел несколько решений, ни одно из которых не помогло мне.

У меня есть UIButton созданный простым перетаскиванием в UIViewController в редакторе раскадровки.

У UIButton есть выход, связанный с файлом .h для UIViewController связанного с этим представлением. Он также синтезируется в файле .m.

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

Я хочу изменить расположение кнопки во время выполнения, как это;

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

Однако всякий раз, когда я пытаюсь это сделать, кнопка отказывается двигаться.

Все остальные функции редактирования (например, setTitle т.д.) setTitle, но по какой-то причине кадр не будет двигаться так, как я хочу.

Ответ 1

Просто снимите флажок "Использовать автозапуск" в инспекторе файлов.

Ответ 2

.h файл

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

}

Этот код перемещает кнопку из одной точки в другую.

Ответ 3

Замените свой код на нижеследующий, который включает в себя код для удаления маски автоматического изменения размера.

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