设置与父视图相关的子视图的大小

Posted

技术标签:

【中文标题】设置与父视图相关的子视图的大小【英文标题】:Setting the size of a subview related to the parent view 【发布时间】:2015-07-19 21:44:00 【问题描述】:

是的,所以我有一个名为 SimpleCalculator 的类,在界面构建器中我有一个带有 IBAction 的按钮。当我按下按钮时,它会添加一个包含复杂功能的子视图,然后对其进行动画处理,使其从底部向上滑动。

我遇到的问题是,当我在 iPad 上运行它时,它总是会占用全屏来显示功能,但是我希望它只占用 75% 的屏幕,就像我在 iPhone 上运行它时一样.

这是我目前要做的代码:

- (IBAction)advancedButton:(id)sender 
    UIView * advancedView = advancedCalculator.view;

    [advancedView setFrame:CGRectMake(0, self.view.bounds.size.height, self.view.bounds.size.width, self.view.bounds.size.height)];

    [self.view addSubview:advancedView];

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];

    [advancedView setFrame:CGRectMake(0, self.view.bounds.size.height * 0.25, self.view.bounds.size.width, self.view.bounds.size.height)];

    [UIView commitAnimations];

【问题讨论】:

【参考方案1】:

我建议您使用一种简单的方法。在情节提要中禁用自动布局和大小类并尝试使用手动方法。这很简单:) :) 如果您不清楚,请告诉我 :)

【讨论】:

我不确定,你能给我更多的指导吗?我了解如何禁用自动布局和大小类,但在那之后我有点迷茫 转到您的故事板并选择您的视图控制器。转到 XCode 右侧的文件检查器中的第一个选项卡。在 interface builder 文档下,取消选中 Use Auto-layout 和 Use size classes 这两个复选框。稍后转到文件检查器,转到选项卡之前的最后一个,并检查您定义的调整大小和边距样式:) :) 好的,我已经尝试重新定义页边距样式和调整大小,但是当我在 iPad 上尝试时它根本没有调整大小 它肯定会工作...尝试评论上面的代码。因为,他们使用了设备的整个高度和宽度。我很确定它会起作用..尝试在文件检查器的调整大小屏幕上选择要填充的宽度和高度:) 我尝试注释掉设置框架的代码,但它只是返回到较小的尺寸并且不会填满 iPad 上的屏幕。

以上是关于设置与父视图相关的子视图的大小的主要内容,如果未能解决你的问题,请参考以下文章

调整旋转 UIView 的子视图大小

如何设置我的 UITableViewCell 子类的子视图以使用自动调整大小的蒙版?

固定 UIScrollView 的子视图,而其他子视图可滚动

为啥 UIStackView 调整排列的子视图的大小?

在 IB 中,当我调整父视图的大小时,如何让子视图保持与父视图相同的大小?

使用窗口调整自定义视图的大小