Изменение положения экрана UIView / UIControl при касании его - PullRequest
4 голосов
/ 20 января 2011

Я хорошо знаю, что это простой вопрос.Я хотел бы узнать, как переместить CGRect / UIButton в другое место на экране, когда пользователь выбирает его.Заранее спасибо за помощь.

- (void)showMeSomeButtons:(CGRect)frame{

    button = [[UIButton alloc] initWithFrame:frame];
    button.frame = CGRectMake(240, 150, 50, 50);

    UIImage *buttonGraphic = [UIImage imageNamed:@"1.png"];

    [button setBackgroundImage:buttonGraphic forState:UIControlStateNormal];
    [button addTarget:self.viewController action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];

    [self addSubview:button];
}

-(void)buttonClicked{

    ???
}

Ответы [ 2 ]

14 голосов
/ 20 января 2011

Я думаю, вам нужно добавить : в оператор @selector(buttonClicked:), поскольку IBAction s ожидает один (id)sender атрибут метода.

Вы можете сделать что-то похожее на код ниже.

- (void)buttonClicked:(id)sender {
   CGRect frame = button.frame;
   frame.origin.x = 500; // new x coordinate
   frame.origin.y = 500; // new y coordinate
   button.frame = frame;
}

Если вы хотите анимировать его, вы можете добавить блок beginAnimation.

- (void)buttonClicked:(id)sender {
    CGRect frame = button.frame;
    frame.origin.x = 500; // new x coordinate
    frame.origin.y = 500; // new y coordinate

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration: 0.25];
    button.frame = frame;
    [UIView commitAnimations];
 }
1 голос
/ 10 октября 2013

CGRectOffset(rect, dx, dy)

Перемещает начало прямоугольника на дельта X и Y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...