我正在使用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很挑剔。这是使用 UIImageView 平铺背景的正确且节省内存的方法吗?有没有更好的方法可以做到这一点?我可以在初始化磁贴后手动进入并更改它显示的图像并使其实时更新吗?
tileView[1][2].image = [UIImage imageNamed:@"anotherTile.png"];
提前感谢,我刚刚在大学完成了为期 6 周的 IOS 编程基础课程,所以我仍然发现自己偶尔会试图安抚客观 C 神。
我想我的疑问是为什么你需要它们作为图像视图。在视图或图层中绘制图像非常容易,在网格中排列视图或图层非常容易;当您没有真正使用或不需要图像视图的任何功能时,图像视图的用途是什么?
我有几个显示平铺图像的应用程序 - 一个在网格中显示 99 个瓶子,一个显示一个瓷砖"碎片"网格,用户成对点击以关闭它们,一个显示矩形拼图网格,用户滑动以交换它们并将它们按正确的顺序排列,一个显示用户在三元组中点击以匹配它们的"卡片"网格 - 没有在这些情况下,我使用图像视图。一方面,他们是CALayers;在其他情况下,它们是自定义 UIView 子类;但在任何情况下我都不会使用 UIImageViews。
对于像图像网格这样简单的东西,使用 UIImageViews 似乎,正如你似乎暗示的那样,矫枉过正。如果你求助于UIImageViews的原因是你不知道如何让UIView或CALayer绘制它的内容,我会说,在你继续之前停下来学习如何做到这一点。