1

井字游戏对我来说似乎是一个不错的运动。

我想先画井字游戏网格。
Interface Builder 没有用于绘制线条的内置类。

因此我的问题是:我可以使用哪个类以编程方式绘制网格线?

4

4 回答 4

4

以编程方式执行此操作的最简单方法是创建 UIView 的子类并覆盖drawRect()方法。

这是一个名为TTView的视图子类的示例:

#import "TTView.h"

@implementation TTView

- (void)drawRect:(CGRect)rect {
    int xStart = 10, yStart = 10;
    int gridSize = 300;

    UIBezierPath *topPath = [UIBezierPath bezierPath];
    // draw vertical lines
    for(int xId=1; xId<=2; xId++) {
        int x = xStart + xId * gridSize / 3;
        [topPath moveToPoint:CGPointMake(x, yStart)];
        [topPath addLineToPoint:CGPointMake(x, yStart+gridSize)];
    }

    // draw horizontal lines
    for(int yId=1; yId<=2; yId++) {
        int y = yStart + yId * gridSize / 3;
        [topPath moveToPoint:CGPointMake(xStart, y)];
        [topPath addLineToPoint:CGPointMake(xStart+gridSize, y)];
    }

    [[UIColor whiteColor] setStroke];

    [topPath stroke];
}

@end

不要忘记创建您的视图并将其添加到您的UIViewController中,如下所示:

TTView *ttv = [[TTView alloc] initWithFrame:self.view.frame];
[self.view addSubview:ttv];
[ttv release];
于 2011-12-07T14:50:26.637 回答
2

iOS 中的绘图可以使用Core GraphicsQuartz 2D来完成。

于 2011-12-07T14:06:30.850 回答
2

Sam Soffes 将SSToolkit描述为

SSToolkit 让生活更轻松。它由我在所有应用程序中使用的各种视图控制器、视图和类别组成。随意分叉回购并使其变得更好。

他的课程之一是SSLineView来画线。我不确定它对非水平线的支持程度。这是.h.m虽然它可能在 SSToolkit 的其余部分中具有依赖关系。

于 2011-12-07T14:21:16.460 回答
2

您可以创建一个 UIView 子类,然后实例化该视图的 drawRect 回调委托以执行任何所需的核心图形绘制(线条等)。

如果你想在 IB 内部做一些严格的事情,你可以使用一些像线条一样细的 UIView,并将它们的背景颜色设置为所需的线条颜色。

于 2011-12-07T14:49:36.953 回答