Основной UIView содержит два подзаголовка - UIView_1
и UIView_2
.
В UIView_2
есть кнопка для отображения или скрытия UIView_1
.
Например, когда пользователь прикасается к кнопке, чтобы показать UIView_1
, тогда UIView_1
сдвинется вниз, а UIView_2
будет двигаться вниз с переходом.
У меня очень мало знаний в анимации. Может ли кто-нибудь показать мне пример кода для справки?
Должен ли я использовать CGAffineTransformMakeTranslation?
Спасибо.
Как показать/скрыть UIView с анимацией в iOS?
Ответ 1
Вам не нужно ничего такого сложного. Просто измените размер рамки просмотра.
NSTimeInterval animationDuration = /* determine length of animation */;
CGRect newFrameSize = /* determine what the frame size should be */;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:animationDuration];
theViewToChange.frame = newFrameSize;
[UIView commitAnimations];
Ответ 2
Просто скрыть/показать с эффектом fadein/out `
/Показать/
sliderView.hidden = NO;
sliderView.alpha = 0.1;
[UIView animateWithDuration:0.25 animations:^{
sliderView.alpha = 1.0f;
} completion:^(BOOL finished) {
// do some
}];
/Чтобы скрыть /
[UIView animateWithDuration:0.25 animations:^{
sliderView.frame = CGRectMake(130, 30, 0, 0);
[sliderView setAlpha:0.1f];
} completion:^(BOOL finished) {
sliderView.hidden = YES;
}];
`
Ответ 3
Это зависит от того, что вы хотите сделать с UIView_2
.
-
Поместите
UIView_1
нижеUIView_2
в Interface Builder. -
Размер
UIView_2
займет все пространство нижеUINavigationBar
. -
Используйте следующий код, чтобы изменить размер (используя
uiview2_resized_rect
) фрейм дляUIView_2
или перевести/переместить фрейм дляUIView_2
(используяuiview2_translated_rect
):
CGRect uiview1_original_rect = UIView_1.frame;
CGRect uiview2_original_rect = UIView_2.frame;
CGRect uiview2_translated_rect = CGRectMake(uiview2_original_rect.origin.x,
uiview2_original_rect.origin.y+uiview1_original_rect.size.height,
uiview2_original_rect.size.width,
uiview2_original_rect.size.height);
CGRect uiview2_resized_rect = CGRectMake(uiview2_original_rect.origin.x,
uiview2_original_rect.origin.y+uiview1_original_rect.size.height,
uiview2_original_rect.size.width,
uiview2_original_rect.size.height-uiview1_original_rect.size.height);
[UIView animateWithDuration:0.300 delay:0.0
options:UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionBeginFromCurrentState
animations:^{
//uncomment this and comment out the other if you want to move UIView_2 down to show UIView_1
//UIView_2.frame = uiview2_translated_rect;
UIView_2.frame = uiview2_resized_rect;
} completion:^(BOOL finished) {
}];