在iPhone上绘制网格或使用图像

时间:2011-05-26 20:06:15

标签: iphone ios ios4 opengl-es

我想创建一个简单的数独网格。像这样的东西: http://i1-mac.softpedia-static.com/screenshots/31-3-33_1.png

创建网格图像并用作背景图像然后在此处布置我的数字或者我应该使用OpenGL或其他东西绘制网格是一个好主意吗?

如果使用图片,适合的尺寸是多少?

如果是OpenGL,那怎么办?

最诚挚的问候 莱纳斯

3 个答案:

答案 0 :(得分:1)

保持简单。不需要OpenGL。除非你想要疯狂的动画,否则背景图像对于suduku网格非常有效。

你还遗漏了CoreGraphics作为一个选项...它在适合灵活性和易用性方面适合介于背景图像和opengl之间....仍然...背景图像很容易我不知道为什么你不会那样使用它。

对于尺寸,请记住,您需要支持iPad(1024 x 768),iPhone 4 Retina显示屏(640 x 960)和iPhone(320 x 480)......如果您显示状态栏,或其他ui元素,你需要考虑到这一点。这些元素的大小记录在案并广泛提供。

答案 1 :(得分:1)

我会提出另一个可能的解决方案:使用CoreAnimation。对于数独网格,您可以为每个数字使用一个CATextLayer。然后,您可以使用图层的borderWidth属性来获取网格图层的边框。

另一种可能的解决方案是通过将图像设置为图层的content属性或使用drawInContext:(CGContextRef)ctx方法中的CoreGraphics自己绘制网格来创建绘制网格的根图层。然后将您的数字添加为CATextLayers。很酷的是,你现在可以轻松淡入或淡出数字。您还可以通过设置CATextLayer的{​​{1}}属性来更改每个字段的背景。

一如既往:TIMTOWTDI。

答案 2 :(得分:0)

图像(在图像视图中设置)可能是最简单的解决方案,但更好的选择是创建一个UIView子类并通过覆盖drawRect:来自己处理绘图(如果没有其他你没有的话)处理加载背景图像的内存开销)。 OpenGL会有点矫枉过正,但Quartz 2D绘图(CoreGraphics的一部分)很容易,并且在这里可以很好地工作。看看CGContextMoveToPoint(),CGContextAddLineToPoint(),CGContextStrokePath()和相关方法。你必须做一些工作来正确布局网格(特别是如果你想支持多个设备/方向),但绘图本身不应该占用太多代码。