为子视图的子视图设置框架

Posted

技术标签:

【中文标题】为子视图的子视图设置框架【英文标题】:Setting frame for subview's subview 【发布时间】:2014-03-24 17:09:04 【问题描述】:

我有 xib 定义的视图控制器。

在这个视图控制器中,我添加了子类 UIView。在这个子类 UIView 上,我想添加另一个 uiview。

我有变量 nextRound 是我的自定义视图数据类型。我像这样初始化它:

    NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"FDCOStaticNextRound" owner:self options:nil];
    nextRound = [subviewArray objectAtIndex:0];
    nextRound.frame =  CGRectZero;
    nextRound.alpha = 0.8;
    [self addSubview:nextRound];

设置断点后,nextRound 的 frame 确实是 0,0,0,0 但是,它加上了它的 xib 的 frame (0,0,320,91)。

我尝试在进入下一轮时对其进行动画处理(因此它会呈现几秒钟,然后通过上卷/下移动画将其关闭)。然而,即使改变框架似乎也无济于事。断点,帧发生变化,但屏幕上的实际视图没有任何作用。

自动布局已关闭,大小检查器 - 自动调整大小仅设置在左上角。我在视图控制器中也有类似的功能,而且它可以完美地工作,所以我想它必须做一些事情才能将它添加到另一个自定义视图中。

【问题讨论】:

您的实际问题是什么? 好吧,我添加了子视图,将它的框架更改为 0,0,0,0 但是在我使用 [self addSubView:nextRound] 添加它之后,它会添加它的原始框架 【参考方案1】:

我设法弄明白了。在我的 xib(属性检查器)中,我没有启用选项剪辑子视图:-/

【讨论】:

以上是关于为子视图的子视图设置框架的主要内容,如果未能解决你的问题,请参考以下文章

UIView 使用自定义属性有条件地为子视图设置动画

如何在具有自动布局的容器视图中将 UITableView 的大小设置为子视图

如何在 swiftui 中为子视图设置私有状态变量?

iOS - 尝试在 layoutSubviews 中的子视图上设置自动布局

视图快速显示其外部的子视图

即使不将其添加为子视图,设置为 TableViewController 的刷新控件也可以工作