1

我有一个 UIView,我用它作为我的主视图,我想在屏幕上重复子视图。我该怎么做?

4

1 回答 1

1

你可以看看核心动画。有一个名为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];
    }
}

您必须弄清楚层位置的每次迭代的计算。请记住,默认情况下,图层的锚点是其中心。您可以通过减去一半的图层平铺大小来计算它,也可以将锚点更改为角。有关这方面的更多信息,请查看核心动画文档的图层几何部分

于 2009-11-16T23:22:00.487 回答