Переключение анимации UIImageView с помощью UIButton, созданного во время выполнения

Я новичок в цели C и пытаюсь переключить анимацию UIImageView из одного заданного местоположения на экране в другое заданное местоположение на экране, используя UIButton и UIImageView, созданные во время выполнения. Когда я нажимаю UIButton, я хочу, чтобы UIImageView анимировался из одного места в другое, а setBackgroundImage UIButton переключался в другое состояние imageNamed:.

Любая помощь будет принята с благодарностью!

// UIImageView - Roof Panel Creation
roofPanel = [[UIImageView alloc]initWithFrame:CGRectMake(300, 400, 400, 400)];
[roofPanel setImage:[UIImage imageNamed:@"roof-panel.png"]];
[self.view addSubview:roofPanel];

// UIButton - Panel Lift Button Creation
panelLiftButton = [[UIButton alloc]initWithFrame:CGRectMake(722, 300, 70, 50)];
[panelLiftButton setImage:[UIImage imageNamed:@"panel-lift-button.png"] forState:UIControlStateNormal];
[self.view addSubview:panelLiftButton];

person Brandon Arroyo    schedule 10.10.2012    source источник


Ответы (1)


Прежде всего, добро пожаловать в Objective C. Вам понравится программировать на этом замечательном языке...

Вы должны установить изображение для UIControlStateSelected в UIButton, а затем добавить цель (IBAction UIButton), как я показал в приведенном ниже коде...

Убедитесь, что изображения UIControlStateSelected и UIControlStateNormal должны быть разными.

    panelLiftButton = [[UIButton alloc]initWithFrame:CGRectMake(722, 300, 70, 50)];
    [panelLiftButton setImage:[UIImage imageNamed:@"panel-lift-button.png"] forState:UIControlStateNormal];
    [panelLiftButton setImage:[UIImage imageNamed:@"panel-lift-button_ON.png"] forState:UIControlStateSelected];
    [panelLiftButton addTarget:self action:@selector(toggleImage:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:panelLiftButton];

Затем сделайте функцию, например.....

-(IBAction)toggleImage:(id)sender
{
    UIButton * btn = (UIButton*)sender;
    btn.selected = ! btn.selected;
    if (btn.selected)
    {
        [UIView animateWithDuration:0.3 animations:^{
            [roofPanel setFrame:CGRectMake(0, 0, 400, 400)];//here you can set your desired frame.
        }];
    }
    else
    {
        [UIView animateWithDuration:0.3 animations:^{
            [roofPanel setFrame:CGRectMake(300, 400, 400, 400)];//here you can set your original frame.
        }];

    }

}

Наслаждайтесь программированием с помощью Objective C.

person Nirav Gadhiya    schedule 15.03.2013