Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift中的颜色填充_Ios_Swift_Graphics_Uicolor_Flood Fill - Fatal编程技术网

Ios Swift中的颜色填充

Ios Swift中的颜色填充,ios,swift,graphics,uicolor,flood-fill,Ios,Swift,Graphics,Uicolor,Flood Fill,在Swift中是否有填充区域的通用方法 我的视图中有各种形状,直线、椭圆、曲线等等。 这些形状限定了一定数量的区域。 我想用一种颜色填充一个区域(uiColorOne),用另一种颜色填充另一个区域(uiColorTwo) 可能吗?如果是,我怎么做 import UIKit override func drawRect(rect: CGRect) { let path = UIBezierPath() path.moveToPoint(CGPoint(x: 200, y: 200

在Swift中是否有填充区域的通用方法

我的视图中有各种形状,直线、椭圆、曲线等等。 这些形状限定了一定数量的区域。 我想用一种颜色填充一个区域(uiColorOne),用另一种颜色填充另一个区域(uiColorTwo)

可能吗?如果是,我怎么做

import UIKit

override func drawRect(rect: CGRect)
{
    let path = UIBezierPath()
    path.moveToPoint(CGPoint(x: 200, y: 200))
    path.addLineToPoint(CGPoint(x: 200, y: 300))
    path.addLineToPoint(CGPoint(x: 300, y: 200))
    path.closePath()
    UIColor.redColor().set()
    path.lineWidth = 1
    path.fill()
}

您需要覆盖
drawRect
,以便开始在代码中创建一些几何图形项(仅覆盖,从不调用它)。代码片段基于点(小心不要像素)创建一个元素,并用
redColor
填充它。在大多数情况下,您必须使用
UIBezierPath
来处理元素,因此我建议您在这里的apple文档中仔细查看它,因为它有一些很棒的方法可以帮助你解决每天的困难:

请阅读
NSBezierPath
()我正在寻找一个通用的洪水填充解决方案。在写我的文章之前,我很快就读到了贝齐尔之路。但似乎我必须单独处理周围的曲线。希望我是错的,我会看看你建议的链接。
是否有一种通用方法来填充Swift中的某个区域。
:不,因为Swift是一种编程语言,而不是UI框架。您需要的可能是UIKit,这是iOS的UI框架。您可以将其与Swift或Objective-C配合使用。我的drawRect已经运行良好。使用UIBezierPath的问题是,我需要先准备一个路径,然后填充它。这不是我想要的(至少在最好的情况下)。我有一堆线和曲线,去除了一些区域,然后我想用洪水填充(如果可能的话,不必担心周围的形状)。如果我可以开始给一个点上色,然后递归地(对相邻的点)循环,那将是最理想的。你想用编程的方式给屏幕上的每个元素上色吗?您是否介意颜色(所有颜色都不同或相同?)?谢谢,在这一点上,我没有真正的代码显示,因为没有工作。我只是想知道怎样才能让洪水淹没整个地区。而且面积不是预先确定的。例如,假设视图中有数十条直线和曲线,您将得到许多区域。如果所有这些区域都闭合,并且这些区域被命名为(path1、path2)等,您只需执行path1.fill()和path2.fill()。。。。所有路径的等。你明白了吗?一旦一个路径被关闭,你可以按照代码用任何你想要的颜色填充它。是的,我知道如果这些区域被命名,我可以使用path.fill。但他们没有名字。这些区域只是布置许多直线和各种曲线的随机结果。