iPhone - 我如何隐藏视图并让它的空间被其他视图使用(如 android visibility = GONE)

Posted

技术标签:

【中文标题】iPhone - 我如何隐藏视图并让它的空间被其他视图使用(如 android visibility = GONE)【英文标题】:iPhone - how may I hide a view and let it's space be used by other views (like android visibility = GONE) 【发布时间】:2011-06-11 14:07:55 【问题描述】:

您知道隐藏视图(或类似视图的任何内容)并让屏幕的其他视图使用留空位置的简单(或不简单)方法吗?并在显示该视图时进行相反的操作。像 android Visibility = GONE for layers 之类的东西。

谢谢

【问题讨论】:

您应该发布一些代码,以便知道您想在哪里使用该功能... 【参考方案1】:

许多 UIKit 类都有一个属性 hidden 可以满足您的需求。它是在 UIView 中定义的,因此您可以在您使用的大多数视觉元素中找到它。

【讨论】:

就我所见,hidden 只是隐藏视图,不会使其他视图使用留空的空间。 如果您只想查看隐藏视图后面的视图,这可以做到。另一种方法是将视图发送到视图层次结构的后面,上面有不透明的视图。如果你真的想让视图调整大小并将它们自己平铺以适应屏幕的某些区域,你可以通过多种方式向视图类发出信号,但是要调整大小,你需要编写一些代码。【参考方案2】:

没有 Visibility.GONE 这样的东西,据我的研究表明,即使是 AutoLayout 也无法帮助您。您必须手动替换受可选显示组件影响的视图(在我的情况下,底部视图上的 optionalView 下方的所有视图):

- (IBAction)toggleOptionalView:(id)sender 
    if (!_expanded) 
        self.optionalView.frame = CGRectMake(self.optionalView.frame.origin.x, self.optionalView.frame.origin.y, self.optionalView.frame.size.width, _optionalHeight);
        self.bottomView.frame = CGRectMake(self.bottomView.frame.origin.x, self.bottomView.frame.origin.y+_optionalHeight, self.bottomView.frame.size.width, self.bottomView.frame.size.height);
        _expanded = YES;
     else 
        self.optionalView.frame = CGRectMake(self.optionalView.frame.origin.x, self.optionalView.frame.origin.y, self.optionalView.frame.size.width, 0);
        self.bottomView.frame = CGRectMake(self.bottomView.frame.origin.x, self.bottomView.frame.origin.y-_optionalHeight, self.bottomView.frame.size.width, self.bottomView.frame.size.height);
        _expanded = NO;

    

建议不要对可选组件的高度进行硬编码,否则每次编辑 XIB/Storyboard 时代码都会中断。我在 viewDidLoad 中设置了一个 float _optionalHeight 字段,所以它始终是最新的。

【讨论】:

以上是关于iPhone - 我如何隐藏视图并让它的空间被其他视图使用(如 android visibility = GONE)的主要内容,如果未能解决你的问题,请参考以下文章

隐藏在标签栏控制器标签栏旁边的 iPhone 视图

动态调整视图大小 osx

隐藏 UIView 并调整其他小部件以占用空间?

使用自动布局隐藏视图并重新定位其他视图

如何快速隐藏和取消隐藏具有高度的视图?

为 UITableViewCell 的附件视图使用自定义图像并让它响应 UITableViewDelegate