gpt4 book ai didi

iphone - 在 Objective-C (iPhone) 中设置要绘制的 View ?

转载 作者:行者123 更新时间:2023-12-03 20:58:59 24 4
gpt4 key购买 nike

好吧,所以,我对 iPhone 之类的东西都是新手,但我什至不擅长编程,我有多年的 ActionScript 2.0 和 3.0 经验,我想设置一个 View ,我也可以将变量传递给. View 将用 Quartz 绘制所有内容。

我尝试制作另一个游戏,尝试将指向 NSMutableArray 的指针添加到 View 类中,但它不起作用,因为我不知道如何存储实际的类。

我想做这样的事情:

[myView setNeedsDisplay];

但我必须这样做

[(View*)self.view setNeedsDisplay];

最后没能成功...

好的,现在我得到了:

- (void) viewDidLoad {
[super viewDidLoad];
viewClass = [[View class] retain];
gameView = [[[viewClass alloc] initWithFrame: CGRectZero] retain];
[gameView setNeedsDisplay];
}

这是在我的drawInContext:context中,它是由drawRect触发的:

另外,我的drawRect确实[self drawInContext: UIGraphicsGetCurrentContext()];

CGContextSetStrokeColorWithColor(context, [[UIColor blackColor] CGColor]);
CGContextSetLineWidth(context, 3.0);
CGContextSetLineCap(context, kCGLineCapRound);
CGContextSetLineJoin(context, kCGLineJoinRound);
CGMutablePathRef aPath = CGPathCreateMutable();
CGPathMoveToPoint(aPath, nil, 5, 5);
CGPathAddLineToPoint(aPath, nil, 45, 43);
CGContextAddPath(context, aPath);
CGContextStrokePath(context);

没有任何反应。

帮忙?

哦,是的,我收到此错误::上下文无效每次我使用这些功能时。 :[

谢谢!

最佳答案

你把事情想得太复杂了。不要从 drawRect 调用 drawInContext。相反,只需在您的 drawRect 方法中执行此操作即可:

- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [[UIColor blackColor] CGColor]);
CGContextSetLineWidth(context, 3.0);
CGContextSetLineCap(context, kCGLineCapRound);
CGContextSetLineJoin(context, kCGLineJoinRound);
CGContextMoveToPoint(context, 5, 5);
CGContextAddLineToPoint(context, 45, 43);
CGContextStrokePath(context);
}

在该代码中您应该注意一些事情。每当您通过重写drawRect在UIView中进行自定义绘图时,请使用UIGraphicsGetCurrentContext来获取对当前上下文的引用。其次,使用CGContext时,不需要创建新的CGPathCGContextCGPath 具有相同的绘图功能,请参阅文档 here

要创建 View ,您需要做的就是:

gameView = [[YourView alloc] initWithFrame:CGRectZero];

其中 YourView 是您的 UIView 子类。您不需要创建单独的类引用 (viewClass),也不需要在 UIView 对象上调用 retain,因为保留计数会增加当你创建它的时候就已经存在了。另请注意,CGRectZero 是一个大小为 (0, 0) 的矩形。如果您希望 View 可见,则需要提供适当大小的 CGRect 而不是 CGRectZero

希望这能澄清一些事情。

关于iphone - 在 Objective-C (iPhone) 中设置要绘制的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2557153/

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