画在矩形而不被调用

时间:2013-03-26 13:45:21

标签: ios uiviewcontroller core-graphics

所以我有一个图表绘图视图。它位于视图控制器中,以模态形式呈现。问题是drawInRect没有被调用。这是为什么?视图在Interface Builder中设置,并初始化...

- (void)viewWillAppear:(BOOL)animated
{
    minVal = [self.delegate minValue];
    maxVal = [self.delegate maxValue];
    noSteps = [self.delegate noSteps];
    stepVal = [self.delegate stepValue];
    data = [self.delegate dataArray];
    formulaName = [self.delegate formulaName];
    self.titleLabel.text = formulaName;

    // draw the chart
    self.chartView = [[PSChartIOS alloc] initWithFrame:self.chartView.bounds andChartType:PSChartTypeColumn];
    [self.chartView setDataSource:self];
    [self.chartView setChartTitle:@""];
    [self.chartView setPanOXAxis:YES];
    [self.chartView setTitleColor:[UIColor redColor]];
    [self.chartView setStartAtTheEnd:NO];
    //[chart setAutoresizingMask: UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth];

    [self.chartView loadData];
    [self.chartView setNeedsDisplay];
    // NSLog(@"autoresize mask :%d",self.view.autoresizingMask);

//    [self.view addSubview:self.chartView];
//    [self.chartView addSubview:chart];




    [super viewWillAppear:animated];
}

调用所有委托方法,因此视图有它的数据......它从不绘制...... 我有一个感觉,问题可能是self.chartView.bounds ..但是应该只返回在IB中设置的界限......

发现问题:

 NSLog(@"the bounds %@",NSStringFromCGRect( self.chartView.bounds));

返回

the bounds {{0, 0}, {0, 0}}

我认为它会从IB中获得界限......显然不是

2 个答案:

答案 0 :(得分:1)

您已注释掉将PSChartIOS视图放入视图层次结构的行。

//    [self.view addSubview:self.chartView];

我敢打赌,一旦你这样做,一切都会好的。

你的框架也没有意义。使用类似

的框架创建视图
CGRectMake(0,0,200,200).  

这将测试以确保您可以在视图控制器的视图中看到200x200的图表。

答案 1 :(得分:0)

我无法在您的代码中看到drawInRect方法调用。

如果您希望setNeedsDisplay可以拨打电话。然后它不能自动调用。如果您已创建自己的方法,则需要明确调用它。

然而,它会调用drawRect

编辑:

您输错了没有名为drawInRect:的方法drawRect:

- (void)drawRect:(CGRect)rect {
    // Drawing code
    // only draws what is specified by the rect parameter
}