Как нарисовать линию программно? - PullRequest
1 голос
/ 07 декабря 2011

Игра в крестики-нолики кажется хорошим упражнением для меня.

Я хочу сначала нарисовать сетку крестики-нолики.
Интерфейсный Разработчик не имеет встроенного класса для рисования линий.

Поэтому мой вопрос: Какой класс можно использовать для программного рисования линий сетки?

Ответы [ 4 ]

4 голосов
/ 07 декабря 2011

Самый простой способ сделать это программно - создать подкласс 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];
2 голосов
/ 07 декабря 2011

Сэм Соффс пишет SSToolkit , описанный как

SSToolkit облегчает жизнь.Он состоит из различных контроллеров представления, представлений и категорий, которые я использую во всех своих приложениях.Не стесняйтесь раскошелиться на репо и сделать его лучше.

Один из его классов - SSLineView для рисования линий.Я не уверен, насколько хорошо он поддерживает не горизонтальные линии.Вот .h и .m , хотя он может иметь зависимости в остальной части SSToolkit.

2 голосов
/ 07 декабря 2011

Вы можете создать подкласс UIView, а затем создать экземпляр делегата обратного вызова drawRect этого представления для выполнения любого желаемого рисунка Core Graphics (линий и т. Д.).

Если вы хотите сделать что-то строго внутри IB, вы можете использовать некоторые UIViews, такие же тонкие, как линии, у которых цвет фона установлен на желаемый цвет линии.

2 голосов
/ 07 декабря 2011

Рисование в iOS можно выполнить с помощью Core Graphics или Quartz 2D .

...