UISwitch проблема с анимацией - PullRequest
0 голосов
/ 26 декабря 2018

UISwithch управлять, как переключатель.У меня есть три кнопки, и мне нужно, чтобы кнопки были переключателями, если один переключатель включен, а остальные выключены.Проблема в анимации.Пожалуйста, проверьте ссылку для анимации

https://drive.google.com/file/d/1_UHi0hvLR2SaC6l-TAZHS4vqn54tS_bq/view?usp=sharing

Здесь я обновляю свой код. Функциональность - это то, что только один выключатель может включаться одновременно, если один выключатель включается, остальные два выключаются.

- (IBAction)switchOnPopular:(id)sender
{
    if(![_PopularSwitch isOn])
    {
        [_PopularSwitch setThumbTintColor:APP_COLOR()];
        _lblPopular.backgroundColor=[UIColor whiteColor];
        [_PopularSwitch setOn:YES animated:YES];
    }

    if([_AtoZSwitch isOn])
    {
        [_AtoZSwitch setThumbTintColor:FOLLOWING_COLOR()];
        _lblAtoz.backgroundColor=SWITCH_OFF_LBL_COLR();
        [_AtoZSwitch setOn:NO animated:YES];
    }

    if([_nearMeSwitch isOn])
    {
        [_nearMeSwitch setThumbTintColor:FOLLOWING_COLOR()];
        _lblnearme.backgroundColor=SWITCH_OFF_LBL_COLR();
        [_nearMeSwitch setOn:NO animated:YES];
    }
    strFilterOption = BUSINESS_FILTER_TYPE_MOST_POPULAR;
}

- (IBAction)switchOnNearMe:(id)sender
{
    if(![_nearMeSwitch isOn])
    {
        [_nearMeSwitch setThumbTintColor:APP_COLOR()];
        _lblnearme.backgroundColor=[UIColor whiteColor];
        [_nearMeSwitch setOn:YES animated:YES];
    }

    if([_PopularSwitch isOn])
    {
        [_PopularSwitch setThumbTintColor:FOLLOWING_COLOR()];
        _lblPopular.backgroundColor=SWITCH_OFF_LBL_COLR();
        [_PopularSwitch setOn:NO animated:YES];
    }

    if([_AtoZSwitch isOn])
    {
        [_AtoZSwitch setThumbTintColor:FOLLOWING_COLOR()];
        _lblAtoz.backgroundColor=SWITCH_OFF_LBL_COLR();
        [_AtoZSwitch setOn:NO animated:YES];
    }
    strFilterOption = BUSINESS_FILTER_TYPE_NEARBY;
}

- (IBAction)switchOnAtoZ:(id)sender
{
    if(![_AtoZSwitch isOn])
    {
        [_AtoZSwitch setThumbTintColor:APP_COLOR()];
        _lblAtoz.backgroundColor=[UIColor whiteColor];
        [_AtoZSwitch setOn:YES animated:YES];
    }

    if([_PopularSwitch isOn])
    {
        [_PopularSwitch setThumbTintColor:FOLLOWING_COLOR()];
        _lblPopular.backgroundColor=SWITCH_OFF_LBL_COLR();
        [_PopularSwitch setOn:NO animated:YES];
    }

    if([_nearMeSwitch isOn])
    {
        [_nearMeSwitch setThumbTintColor:FOLLOWING_COLOR()];
        _lblnearme.backgroundColor=SWITCH_OFF_LBL_COLR();
        [_nearMeSwitch setOn:NO animated:YES];
    }
    strFilterOption = BUSINESS_FILTER_TYPE_ALPHABETIC;
}

1 Ответ

0 голосов
/ 26 декабря 2018

Я не знаю, почему изменение цветов вызывает у вас эту проблему с анимацией, но я бы рекомендовал сначала изменить их, а затем вызывать анимацию после обновления пользовательского интерфейса через GCD с задержкой

[_nearMeSwitch setThumbTintColor:FOLLOWING_COLOR()];
_lblnearme.backgroundColor=SWITCH_OFF_LBL_COLR();
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01f*NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    [_nearMeSwitch setOn:NO animated:YES];
});
...