2015-10-19 233 views
1

是否有一種通用方法來填充Swift中的某個區域。在Swift中填充顏色

我在UIView,線條,橢圓,曲線等有各種形狀。等 這些形狀劃定了一定數量的區域。 我想用一種顏色(uiColorOne)和另一種顏色(uiColorTwo)填充一個區域。

這可能嗎?如果是,我該怎麼做?

+0

閱讀'NSBezierPath'([documentation](https://developer.apple.com/library/mac/documentation) /Cocoa/Reference/ApplicationKit/Classes/NSBezierPath_Class/index.html)) – Arc676

+0

我正在尋找一個普通的填充洪水解決方案。在撰寫我的文章之前,我已經快速閱讀了BézierPath的方式。 但似乎我必須分開處理周圍的曲線。 希望我錯了,我會看看你建議的鏈接。 – Michel

+0

'是否有通用的方法來填充Swift中的區域:否,因爲Swift是一種編程語言,而不是UI框架。你需要的可能是UIKit,這是iOS的UI框架。你可以在Swift或Objective-C中使用它。 – Moritz

回答

2
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,所以我建議你從蘋果上看得很清楚。這裏有文檔,因爲它有一些很棒的方法,可以幫助你解決你每一天的困難:UIBezierPath

+0

我的drawRect已經正常工作了。使用UIBezierPath的問題是我需要先準備一個路徑然後填充它。這不是我想要的(至少在最好的情況下)。我有一堆線條和曲線,除去了一些我想要填充的區域(如果可能的話,不必擔心周圍的形狀)。如果我可以開始着色一個點然後遞歸地(對於相鄰點)進行着色,那將是理想的。 – Michel

+0

你想以編程方式爲屏幕上的每個元素着色?你介意顏色(對於所有人來說是不同的還是相同的?)你能分享一些代碼來找出你想要做的嗎?謝謝 – Korpel

+0

在這一點上,我真的沒有代碼顯示,因爲不工作。 我只想知道如何填充一個區域。而且這個地區並沒有被預測到。想象一下,例如幾十條線和曲線遍佈視圖,你會得到很多區域。 – Michel