如何有效地使用UIImageViews平铺背景?

时间:2015-06-11 02:36:25

标签: ios objective-c multidimensional-array uiimageview

我在Xcode 6中使用许多UIImageViews平铺iPhone背景,我想知道这是否是最有效的解决方案。

我知道一个简单的解决方案是在故事板中创建图像视图,并手动覆盖整个屏幕。我想用代码来做。这是我目前的代码(5x5是一个不错的尺寸,因为我可以向上或向下缩放以用更大或更大的图像填充屏幕):

CGRect tiles[5][5];
UIImage *tileImages[5][5];
UIImageView *tileViews[5][5];

for(int i=0;i<5;i++)
{
    for(int j=0;j<5;j++)
    {
        tiles[i][j] = CGRectMake(50*i,50*j,50,50);
        tileImages[i][j] = [UIImage imageNamed:@"tile.png"];
        tileViews[i][j] = [[UIImageView alloc] initWithFrame:tiles[i][j]];
        tileViews[i][j].image = tileImages[i][j];
        [self.view addSubview:tileViews[i][j]];
    }
}

目前所有图像都是相同的,但从长远来看,我会依赖各种因素。

我已经阅读过,我知道UIImageViews很挑剔。这是使用UIImageViews平铺背景的正确且内存有效的方法吗?有一个更好的方法吗?我可以在初始化磁贴后手动进入并更改它显示的图像并让它实时更新吗?

tileView[1][2].image = [UIImage imageNamed:@"anotherTile.png"];

在此之前,我刚刚在我的大学完成了一个为期6周的基础IOS编程课程,所以我仍然发现自己偶尔试图安抚Objective C Gods。

1 个答案:

答案 0 :(得分:0)

我想我怀疑是你需要它们成为图像视图的原因。在视图或图层中绘制图像非常简单,并且在网格中布置视图或图层非常容易;什么是图像视图,当你没有真正使用或需要任何图像视图的力量?

我有几个显示平铺图像的应用程序 - 一个显示网格中的99个瓶子,一个显示瓷砖网格&#34;件&#34;如果用户点击配对以解除它们,则会显示一个矩形拼图块网格,用户可以滑动这些拼图块以交换它们并使它们按正确顺序排列,其中一个显示一个&#34;卡片网格。用户点击三元组以匹配它们 - 在这些情况的 none 中我使用图像视图。其中一个是CALayers;在其他情况下,它们是自定义UIView子类;但在任何情况下我都不使用UIImageViews。

对于像图像网格这样简单的东西,使用UIImageViews似乎就像你暗示的那样,过度杀伤。如果您使用UIImageViews的原因是您不知道如何让UIView或CALayer绘制其内容,我会说,在您继续前进之前停下来学习如何做到这一点。< / p>