2009-10-28 60 views
1

我会开始说我想做什么,因为我不确定我是否问正确的问题。我正在制作一个基于网格的地图,并将持有一组对象来保持地图的状态和表示。每个对象将是一个Tile类。我应该继承UIView或subclass NSObject并拥有一个UIView的ivar。我也计划在UIView中有一个UIImageView来加载表示地图位的图像。最后,我想加载来自NIB的视图。继承UIView或与UIView合作

单独我知道如何做这些事情,但不知道最佳实践。有什么想法吗?

+0

ooph,完全忽略了'iphone'标签,哎呀。 – rob5408 2009-10-28 23:05:51

回答

5

您是否考虑过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。你只需要计算你的图层rects和位置,并相应地放置它们。

0

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

3

确保您对哪些特定的类/对象包括您的模型,控制器和视图有清晰的定义。您的数据和数据逻辑应该在模型中,您的显示在视图中,并且应该将它们与控制器绑定在一起。

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

但是,使用CALayers是首选的切削刃方法。基本的模型,控制器,视图关系是相同的,除了CALayers取代ImageViews。