2009-05-13 5 views

ответ

147

Первый шаг является определение подкласса UIView, чтобы создать пространство для втягивания.

Если вы начинаете с новым приложением, проще всего будет начать с «окнами на основе приложение ".

Затем зайдите в новый файл и создайте «Objective-C Class» с «Subclass of», установленным в «UIView», и дайте ему имя, например MyView.m.

Теперь откройте группу «Ресурсы» и дважды щелкните «MainWindow.xib», чтобы открыть ее в Interface Builder. Отсюда вы увидите окно с названием «Окно». Нажмите Cmd + Shift + L, чтобы открыть библиотеку, и перетащите компонент «Вид» в свое окно и расположите его так, чтобы вы могли его увидеть. Когда вы выбрали новый вид, нажмите Cmd + 4, чтобы открыть идентификатор инспектора и в разделе «Идентификатор класса», выберите раскрывающийся список и выберите «Мой экран».

Далее необходимо реализовать DrawRect: метод в MyView.m, вот пример кода, который рисует линию:

- (void)drawRect:(CGRect)rect { 
    CGContextRef c = UIGraphicsGetCurrentContext(); 

    CGFloat red[4] = {1.0f, 0.0f, 0.0f, 1.0f}; 
    CGContextSetStrokeColor(c, red); 
    CGContextBeginPath(c); 
    CGContextMoveToPoint(c, 5.0f, 5.0f); 
    CGContextAddLineToPoint(c, 50.0f, 50.0f); 
    CGContextStrokePath(c); 
} 

Сохранить все и нажмите кнопку «Создать и запустить», теперь вы должны увидеть короткая красная линия на iPhone.

Дополнительную информацию о Core Graphics см. В документации Apple. Я также счел полезным искать функции, начинающиеся с CGContext в средстве просмотра документации Xcode, и просматривать их - большинство функций Core Graphics, которые вы в конечном итоге используете, начнутся с термина «CGContext».

+0

спасибо Тобиас .... Это помогает мне .... – 2009-05-13 09:37:43

+56

+1 для ответа с кодом вместо RTFM. – willc2

+0

+1 это помогло мне :) –

4

Вы также можете нарисовать линию, используя UIBezierPath. Ниже будет опираться вертикально-центрированная горизонтальная линия:

- (void)drawRect:(CGRect)rect { 
    CGFloat rectHeight = CGRectGetHeight(rect); 
    CGFloat rectWidth = CGRectGetWidth(rect); 

    UIBezierPath *line = [UIBezierPath bezierPath]; 
    [line moveToPoint:CGPointMake(0, rectHeight/2)]; 
    [line addLineToPoint:CGPointMake(rectWidth, rectHeight/2)]; 

    [[UIColor lightGrayColor] setStroke]; 
    [line stroke]; 
} 
Смежные вопросы