Установить UIView.frame.size.height в ноль, чтобы скрыть содержимое? - PullRequest
0 голосов
/ 21 июля 2010
UIView *stateView = [getSomeUIView thisOne];
CGRect currentFrame = stateView.frame;
if(currentFrame.size.height == 0.0) {
    currentFrame.size = CGSizeMake(260, 60);
}
else {
    currentFrame.size = CGSizeMake(260, 0);
}
stateView.frame = currentFrame;

Я ожидаю, что все подпредставления будут скрыты, когда высота кадра установлена ​​на ноль, однако этого не происходит (в симуляторе iPhone 4.0.1). Любые предложения почему или альтернативы?

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

Ответы [ 3 ]

13 голосов
/ 23 апреля 2012

У меня такая же проблема. Решено с помощью свойства clipsToBounds:

stateView.clipsToBounds = YES
0 голосов
/ 06 августа 2010

Используйте UIScrollView вместо UIView.UIScrollView создан, чтобы скрыть «переполнение» и отлично работает.

0 голосов
/ 06 августа 2010

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

По умолчанию для них установлено «оставаться одинаковыми по ширине и высоте и оставаться на одинаковом расстоянии от верхнего левого угла родительского вида».

Вы можете установить пружины / распорки в Интерфейсном Разработчике или в коде. e.g.:

aSubView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
...