Как нарисовать простую линию без использования Interface Builder? - PullRequest
0 голосов
/ 31 марта 2011

Я новичок.Я просто хочу нарисовать простую линию без использования IB.Я использовал код

lineViewController.m

-(id)init
{
    if(self = [super init])
    {
        myView = [[UIView alloc]initWithFrame:CGRectMake(0,0,320,440)];
        myView.backgroundColor = [UIColor grayColor];
        mView = [[UIView alloc]initWithFrame:CGRectMake(0,0,200,200)];

        self.view = myView;
        [myView addSubView:mView];          
    }
    return self;
}

-(void)viewWillAppear:(BOOL)animated
{
    line = [[MyView alloc]init];
    [line setNeedsDisplay];         
}

MyView.m

#import "MyView.h"

@implementation MyView

- (id)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        // Initialization code
    }
    return self;
}

- (void)drawRect:(CGRect)rect
{
    CGFloat red[4] = {1.0f, 0.0f, 0.0f, 1.0f};
    CGContextSetStrokeColor(c, red);
    CGContextBeginPath(c);
    CGContextMoveToPoint(c, 150.0f, 200.0f);
    CGContextSetLineWidth(c, 5.0f);
    CGContextAddLineToPoint(c, 50,300);
    CGContextAddLineToPoint(c, 260,300);
    CGContextClosePath(c);
}

Но я не умею рисовать.Не могли бы вы мне помочь.Заранее спасибо.

1 Ответ

1 голос
/ 31 марта 2011

Код в viewWillAppear ничего не делает, потому что строка никогда не добавляется в иерархию представления. MyView drawRect никогда не вызывается из-за вышеизложенного, и myView выделяется как UIView вместо MyView. Попробуйте изменить alloc в init контроллера представления.

myView = [[MyView alloc]initWithFrame:CGRectMake(0,0,320,440)];

Также код будет течь как написано. Посмотрите, как сохранить и освободить управление памятью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...