我首先会说我想做什么,因为我不确定我是否问了正确的问题。我正在制作一个基于网格的地图,并将保存一组对象来保持地图的状态和呈现。每个对象都属于 Tile 类。我应该子类化 UIView 或子类 NSObject 并拥有 UIView 的 ivar 吗?我还计划在 UIView 中添加一个 UIImageView 来加载代表地图那部分的图像。最后,我想从 NIB 加载视图。

我个人知道如何做每一件事情,但不确定最佳实践。有什么想法吗?

有帮助吗?

解决方案

您是否考虑过Core Animation图层?您可以使用图层网格创建单个视图,每个图层在视图中都有自己的边界和位置。听起来它可能会给你你需要的东西。在手机上,使用图像设置图层内容非常简单:

CALayer *gridLayer = [CALayer layer];
[gridLayer setContents:(id)[gridImage CGImage]];
[gridLayer setBounds:[gridImage bounds]];

// Position the layer's center a x:25.0 y:25.0 within the view
[gridLayer setPosition:CGPointMake(25.0f, 25.0f)];

[[view layer] addSublayer:gridLayer];

变量gridImage是你在某处分配的UIImage *。您只需要计算图层的位置和位置并相应地放置它们。

其他提示

确保您对构成模型、控制器和视图的特定类/对象有明确的定义。您的数据和数据逻辑应该在模型中,您的显示应该在视图中,并且您应该将它们与控制器结合在一起。

完成网格的最简单方法是使用由单个控制器定位的 UIImageView。该模型将跟踪地图方块之间的逻辑关系并将其转发给控制器,控制器将图像加载到 UIIMageView 中。控制器将处理从笔尖加载所有内容。

然而,使用 CALayers 是首选的前沿方法。除了 CALayers 取代了 ImageView 之外,基本的模型、控制器、视图关系是相同的。

如果我理解正确,你可以创建UIImageView的子类。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top