Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 创建一个UIView子类,根据其框架自动排列其子视图?_Ios_Objective C_Xcode_Gridview_Uiview - Fatal编程技术网

Ios 创建一个UIView子类,根据其框架自动排列其子视图?

Ios 创建一个UIView子类,根据其框架自动排列其子视图?,ios,objective-c,xcode,gridview,uiview,Ios,Objective C,Xcode,Gridview,Uiview,我有这样的要求-我必须创建UIView的子类(例如MyView),其中有4个子视图(UIImageVews,UILabels),按2X2的位置排列。当我创建UIView子类的对象(MyView对象)时并给出一个默认框架,视图中的4个子视图应根据我经过的超级视图框架进行排列 如果我调整或重新构造我的视图对象框架,则4个子视图将根据我为其超级视图提供的新框架重新排列(大小、间距、原点) 我面临着实现这一目标的问题,谁能帮助我实现这一目标。对于我的子类,我的代码应该是泛型的。即使我删除了4个子视图中的

我有这样的要求-我必须创建UIView的子类(例如MyView),其中有4个子视图(UIImageVews,UILabels),按2X2的位置排列。当我创建UIView子类的对象(MyView对象)时并给出一个默认框架,视图中的4个子视图应根据我经过的超级视图框架进行排列

如果我调整或重新构造我的视图对象框架,则4个子视图将根据我为其超级视图提供的新框架重新排列(大小、间距、原点)

我面临着实现这一目标的问题,谁能帮助我实现这一目标。对于我的子类,我的代码应该是泛型的。即使我删除了4个子视图中的任何一个子视图,其余3个视图也应该在其整个超级视图中进行排列


谢谢。

您需要实现的方法是
-(void)layoutSubviews

每当视图的框架发生更改时,以及在其他适当的时间,都会自动调用此函数。在该方法中,您可以访问父视图的大小并布局现有的各种子视图


如果需要在特定时间强制布局,例如在更改视图上的某些属性后,可以调用
[view setNeedsLayout]

相对于superview设置子视图边框。它应该会起作用。顺便问一下,你试过什么?。你有什么特别的问题吗?。