我有一个 UIView,我用它作为我的主视图,我想在屏幕上重复子视图。我该怎么做?
问问题
872 次
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 回答