iPhone SDK:重复子视图

问题描述:

我有一个UIView,我用它作为我的主视图,并且我想在屏幕上重复子视图。我该如何做到这一点?iPhone SDK:重复子视图

+0

有人想帮忙吗? – 2009-11-16 01:31:26

+0

您需要提供更多的上下文。什么是子视图,你想要填补它的超级视图的图像?或者你是否想创建子视图的多个实例来填充空间? – 2009-11-16 03:35:35

+0

Uiview,它的多个实例,平铺 – 2009-11-16 04:16:45

你可以看看核心动画。有一个名为CAReplicatorLayer的图层可以帮助你。或者,您可以使用通用CALayers并将其内容全部设置为相同的图像。你只需要弄清楚你的父视图的宽度以及你想要每个图块的大小,然后根据你的网格尺寸为每个图块创建CALayers来移动每个新图层的位置。像这样:

UIImage *imageToReplicate = [UImage imageNamed:@"tile"]; 
for (i = 0; i < 10; ++i) 
{ 
    for (j=0; j < 10; ++j) 
    { 
     CGFloat xPos = 0.0; // Calculate your x position 
     CGFloat yPos = 0.0; // Calculate your y position 

     CALayer *layer = [CALayer layer]; 
     [layer setBounds:CGRectMake(0.0f, 0.0f, TILE_WIDTH, TILE_HEIGHT)]; 
     [layer setPosition:CGPointMake(xPos, yPos)]; 
     [layer setContents:(id)[image CGImage]]; 
     [[[self view] layer] addSublayer:layer]; 
    } 
} 

你必须找出你的图层位置的每次迭代计算。请记住,默认情况下,图层的锚点是其中心。您可以通过减去图层图块大小的一半来计算它,或者您可以将锚点更改为角落。欲了解更多信息,请看layer geometry section of the Core Animation documentation

+0

它将与UIview一起工作吗? – 2009-11-17 00:24:22

+0

是的。在示例代码中,我提供了[[[self view view]图层] addSublayer:layer];这个视图有一个UIView。 UIView有一个由字段-sublayers表示的图层树。您正在将子层添加到UIView的图层树中。 – 2009-11-17 03:24:04