gpt4 book ai didi

iphone - 传递参数更改 drawRect 方法中的统计信息

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:41:43 26 4
gpt4 key购买 nike

我在将参数传递给我的 drawRect 方法时遇到了问题。它改变了我在方法中给定的参数。

当我直接在 drawRect 中设置矩形框架时它工作正常,所以一定有问题传递参数。

例如它改变所以我的代码是这样的。

ServiceAppViewController.m

-(void) initTransformBoxes{
TransformBox *transform = [[TransformBox alloc] initWithFrame:CGRectMake(20, _transformArrowView.frame.origin.y+65, _transformArrowView.frame.size.width,120)];

[transform setBackgroundColor:[UIColor grayColor]];

[transform drawRect:CGRectMake(0, 0, 20, 20)];
[self.view addSubview:transform];


}

}

变形框.m

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

CGContextSetLineWidth(context, 2.0);

CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);

//but when I do it hard wired it works?
CGRect rectangle = CGRectMake(0, 0, 20, 20);
CGContextAddRect(context,rectangle);
//instead of this
// CGContextAddRect(context,rect);

CGContextStrokePath(context);
}

另一个问题是,我是否可以做一个静态的drawRect方法?我试图覆盖 .h 文件中的 drawRect 但它从未被调用过?

提前致谢!

最佳答案

你不应该调用 [transform drawRect:CGRectMake(0, 0, 20, 20)];

drawRect: 方法在 View 变为可见时自动调用,rect 参数实际上是 View 的框架。

如果要将参数传递给要绘制的 View ,请将其作为属性传递给 TransformBox View 。

当你需要改变它时(在你将它添加到父 View 之后)你使用

[transform setSmallRect:CGRectMake(0, 0, 20, 20)];
[transform setNeedsDisplay];

并且 drawRect 将自动被调用。在 drawRect 方法中使用该属性。

ServiceAppViewController.m

-(void) initTransformBoxes
{
TransformBox *transform = [[TransformBox alloc] initWithFrame:CGRectMake(20, _transformArrowView.frame.origin.y + 65, _transformArrowView.frame.size.width, 120)];

[transform setBackgroundColor:[UIColor grayColor]];

[transform setSmallRect:CGRectMake(0, 0, 20, 20)];
[self.view addSubview:transform];
}

drawRect: 将在添加 View 后调用。

变形框.m

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

CGContextSetLineWidth(context, 2.0);

CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);

CGRect rectangle = [self smallRect];
CGContextAddRect(context,rectangle);

CGContextStrokePath(context);
}

关于iphone - 传递参数更改 drawRect 方法中的统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17926328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com