2011-05-26 76 views

回答

1

保持簡單。不需要OpenGL。除非你想要瘋狂的動畫,否則背景圖像對於suduku網格來說可以很好地工作。

你也離開了CoreGraphics中作爲一個選項...這將適合介於兩者之間的背景圖像和OpenGL中的靈活性和易用性方面仍然.... ...背景圖片是那麼容易我不知道你爲什麼不會使用它。請注意,您需要支持iPad(1024 x 768),iPhone 4視網膜顯示屏(640 x 960)和iPhone(320 x 480)...還可以顯示狀態欄或其他用戶界面元素,你需要考慮到這一點。這些元素的大小被記錄並廣泛可用。

0

圖像(在圖像視圖中設置)可能是最簡單的解決方案,但更好的選擇是創建一個UIView子類,並通過覆蓋drawRect:來處理繪圖(如果沒有其他您不必處理加載背景圖像的內存開銷)。 OpenGL會過度殺傷,但Quartz 2D繪圖(CoreGraphics的一部分)很簡單,並且在這裏可以很好地工作。看看CGContextMoveToPoint(),CGContextAddLineToPoint(),CGContextStrokePath()和相關的方法。你必須做一些工作來正確佈局網格(特別是如果你想支持多個設備/方向),但是圖形本身不應該佔用太多的代碼。

1

我會扔在另一種可能的解決方案:使用CoreAnimation。在數獨網格的情況下,您可以爲每個數字使用一個CATextLayer。然後,您可以使用圖層的borderWidth屬性來獲取網格圖層的邊框。

另一種可能的解決方案是通過將圖像設置爲該圖層的content屬性或使用drawInContext:(CGContextRef)ctx方法中的CoreGraphics自行繪製網格來繪製網格的根層。然後將您的號碼添加爲CATextLayers。很酷的事情是,你現在可以輕鬆淡入或淡出數字。您還可以通過設置CATextLayerbackgroundColor屬性來更改每個單獨字段的背景。

一如往常:TIMTOWTDI。

+0

謝謝@GorillaPatch。現在我只是用網格創建了一個.png圖像。現在我試圖把這些數字放在正確的地方。我有我的所有數字在一個NSMutableArray。我通過這個循環,但我不能重複使用相同的CATextLayer,因爲它會被覆蓋。我試圖做這樣的:http://snipt.net/Linuus/nothing?key=3e47b75000b0924b6c9ba5759a7cf15d我這裏不計算數字的配售,但它只是一個測試。只有最後一個字符會被打印出來,因爲每次都會被覆蓋... – Linus 2011-05-26 23:04:38

+0

答案很簡單:您只是不回收CATextLayers。你必須爲每個數字創建一個新的文本層。這些圖層對象非常輕便,因此如果繪製81個圖層,它不應該影響您的性能。然而在iOS中,UIViews也是CALayers的一個相對封裝。因此,如果您對UITextFields感覺更加舒適,那麼只需嘗試一下並使用CoreAnimation工具來分析您的應用,即可檢查幀速率。如果您需要優化您可以隨時下一步更低級別。 – GorillaPatch 2011-05-27 14:27:05

+0

謝謝!它似乎工作 – Linus 2011-05-27 18:23:38