согласно Apple documentation for UIView
(см извлечение ниже) при вызове setHidden:YES
это не удаляет вид из его SuperView это только делает его исчезнуть так что все равно там вы просто не можете его увидеть. Есть несколько способов, чтобы скрыть вид, так что вы можете повлиять, что вы после этого, но главный один я бы с изменяет в UIView
сек кадр (как David Ansermot
s, как говорит данный +1)
mapView.frame = CGRectMake(newX, newY, newWidth, newHeight);
с newX
, newY
, newWidth
и newHeight
все переменные, которые вы задали где-то, чтобы определить размер и местоположение UIView
. Однако я бы придерживаться этой линии в какой-то анимации, чтобы дать пользователю лучший пользовательский опыт, так что я бы лично сделать что-то вроде:
- (void)showView:(UIView *)view withAnimationForFrame:(CGRect)frame
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
view.frame = CGRectMake(frame);
[UIView commitAnimations];
}
- (void)hideView:(UIView *)view withAnimationForFrame:(CGRect)frame
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
view.frame = CGRectMake(frame);
[UIView commitAnimations];
}
Изменение размера кадра и/или местонахождение должны сделать другие виды, вы хотите масштабировать делать это автоматически, как вы хотите.
Extract from Apple Documentation for UIView
Установка значения этого свойства в YES
скрывает приемник и установив ее на NO
показывает приемник. Значение по умолчанию: NO
.
Скрытый вид исчезает из окна и не принимает входные события. Тем не менее, он остается в списке подсмотров своего супервизора и участвует, как обычно, в авторезистировании. Скрытие представления с помощью subviews приводит к скрытию этих подзонов и любых потомков представлений, которые они могут иметь. Этот эффект является неявным и не изменяет скрытое состояние потомков получателя.
Скрытие представления, которое является текущим первым ответчиком окна, приводит к тому, что следующий действительный ключевой вид представления станет новым первым ответчиком.
Значение этого свойства отражает только состояние приемника и не учитывает состояние предков получателя в иерархии представлений. Таким образом, это свойство может быть NO
, но приемник все еще может быть скрыт, если предок скрыт.
вы просто скройте свой взгляд, чтобы они исчезли не удалены Из супервизора !! понял?? Поэтому вместо этого вам нужно удалить этот вид из супервизора и добавить его обратно, так как ваше состояние стало истинным или ложным! –
Вы используете раскадровки? – FreeNickname
Я использую раскадровки. –