将UIView.frame.size.height设置为零以隐藏内容?

时间:2010-07-20 23:32:24

标签: iphone uiview frame

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位置并将其移出屏幕,也不能创建一个元素来隐藏它,因为我正在使用背景图像,顶部的所有内容都是透明/ alpha层。

3 个答案:

答案 0 :(得分:13)

我遇到了同样的问题。用clipsToBounds属性解决了它:

stateView.clipsToBounds = YES

答案 1 :(得分:0)

如果您设置弹簧和支柱,子视图只会改变大小。

默认情况下,它们设置为“保持相同的宽度和高度,并与父视图的左上角保持相同的距离”。

您可以在Interface Builder或代码中设置弹簧/支柱。 e.g:

aSubView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

答案 2 :(得分:0)

使用UIScrollView而不是UIView。 UIScrollView用于隐藏“溢出”并完美运行。