2013-08-07 4 views
0

im пытается сделать анимацию на UIPicker, где, когда мое приложение запустится, и когда кнопка нажата, она будет скользить от буттома, и когда я снова нажимаю кнопку, она будет скользить. ну, мой код делает это, но только один раз. это делает:анимация скрыть/показать только один раз

первого нажатие -> показать сборщик, isPickerHidden = NO

второго клика -> скрывает сборщик, isPickerHidden = YES

третьего клика -> ничего не делает, но он возвращает isPickerHidden = NO где в представлении viewDidLoad;

и то же, что и четвертый щелчок, он ничего не делает, но возвращает правильное значение BOOL.

isPickerHidden = YES; 

[self.picker setHidden:isPickerHidden]; 

if(isPickerHidden == NO){ 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:0.6]; 
     CGRect frame = self.picker.frame; 
     [self.picker setFrame:CGRectOffset(frame, self.picker.frame.origin.x, self.picker.frame.origin.y)]; 
     [UIView commitAnimations]; 
     isPickerHidden = YES; 
     NSLog(@"hidden yes"); 
    }else if(isPickerHidden == YES) { 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:0.6]; 
     CGAffineTransform transfrom = CGAffineTransformMakeTranslation(0, -200); 
     self.picker.transform = transfrom; 
     [self.picker setHidden:NO]; 
     [UIView commitAnimations]; 
     NSLog(@"hidden no "); 
     isPickerHidden = NO; 
    } 

Я хотел бы знать, на что проблема, с которой я столкнулся, и чего я не вижу. Thanx

ответ

0

добавить протоколирование для кадра и подборщика, чтобы увидеть, что происходит ...

NSLog(@"picker: %.0f, %.0f, %.0f, %.0f", self.picker.frame.origin.x, self.picker.frame.origin.y, self.picker.frame.size.width, self.picker.frame.size.height); 
+0

Я сделаю и попробую. Снова вернется –

+0

idk, что я сделал не так, но кажется, что на каждой итерации значение оси y, кажется, добавляется 244. Вот что я узнал об этом. изменения тоже, но это действительно не помогает. любая идея кстати? –

+0

- это 200pts от вас плюс дополнительные 44pts из панели навигации. – NSMutableString

0

Thanx NS братан для ответа, но я сделал другой подход теперь вместо компенсируя точки от исходного я использовал CGRectMake, я сделал это

if(isPickerHidden == NO) { 
     CGRect frame = self.picker.frame; 
     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationDelegate:self]; 
     [UIView setAnimationDuration:0.6]; 

     [self.picker setFrame:CGRectMake(frame.origin.x, frame.origin.y + 216, frame.size.width, frame.size.height)]; 
     [UIView commitAnimations]; 
     isPickerHidden = YES; 

    } else if (isPickerHidden == YES) { 
     CGRect frame = self.picker.frame; 
     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationDelegate:self]; 
     [UIView setAnimationDuration:0.6]; 

     [self.picker setFrame:CGRectMake(frame.origin.x, frame.origin.y - 216, frame.size.width, frame.size.height)]; 
     [UIView commitAnimations]; 
     isPickerHidden = NO; 

    } 

как скольжение вниз и скользя делают хорошо анимированы таким же образом. но теперь проблема в том, что я хотел заставить UIPicker исчезнуть при загрузке приложения, поэтому в viewDidLoad я попытался использовать [self.picker setHidden: YES]; но кадры, которые я сделал с использованием CGRect, не появляются, когда я нажимаю кнопку, и я также пробовал альфа все еще nop.

Я также положил в тело оператора if-else setHidden для да и знать в отношении их значений. хотел бы знать, что у меня пропало без вести.

Смежные вопросы