gpt4 book ai didi

ios - 为什么 -[UIColor setFill] 在不引用绘图上下文的情况下工作?

转载 作者:技术小花猫 更新时间:2023-10-29 10:33:43 26 4
gpt4 key购买 nike

我不明白为什么这段代码在 drawRect: 中有效:

UIBezierPath *buildingFloor = [[UIBezierPath alloc] init];
// draw the shape with addLineToPoint
[[UIColor colorWithRed:1 green:0 blue:0 alpha:1.0] setFill]; // I'm sending setFill to UIColor object?
[buildingFloor fill]; // Fills it with the current fill color

我的观点是,UIColor 对象收到一条消息 setFill,然后堆栈以某种方式理解此 UIColor 现在将成为填充颜色,这不就是奇怪和错误吗?至少我希望通过调用一些 CGContext 方法来设置填充...但是现在 UIColor 不再代表颜色,而是继续做一些事情来改变我的画。

谁能解释一下幕后发生的事情,因为我完全迷失在这里?

我在发帖前检查了这些引用资料:

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIColor_Class/Reference/Reference.html http://developer.apple.com/library/ios/#documentation/uikit/reference/UIBezierPath_class/Reference/Reference.html

最佳答案

My point is, UIColor object gets a message setFill and then somehow the stack understands that this UIColor will now be the fill color, isn't this just weird and wrong? At the very least I would expect setting fill by calling some CGContext method... But now instead of representing a color, UIColor goes on and does something to change the context of my drawing.

这是因为所有这一切都发生在当前 CGContext 中。这就是为什么您的代码只有在 当前 CGContext 时才有效(例如,在 drawRect:UIGraphicsBeginImageContextWithOptions block 中).

在您学习 iOS 的这个阶段,阅读我的书的绘图章节可能会对您有很大帮助:http://www.apeth.com/iOSBook/ch15.html#_graphics_contexts

关于ios - 为什么 -[UIColor setFill] 在不引用绘图上下文的情况下工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16466661/

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