0
我要實現對UIViews和UIImageViews的這種效果:斯威夫特3把2種顏色以相同的UIView
在UIView的,我知道我可以把2它裏面有不同顏色,但我幾乎認爲必須有更好的方法,我不知道如何在UIImageVIew中做到這一點。某種形式的吊艙會非常有用,因爲我找不到它。
我要實現對UIViews和UIImageViews的這種效果:斯威夫特3把2種顏色以相同的UIView
在UIView的,我知道我可以把2它裏面有不同顏色,但我幾乎認爲必須有更好的方法,我不知道如何在UIImageVIew中做到這一點。某種形式的吊艙會非常有用,因爲我找不到它。
您可以添加一個漸變圖層,而不是從一種顏色轉換到另一種顏色,而是從顏色轉到相同的顏色直到中間點,並且與後一半相同。檢查例子:
let twoColorView = UIView(frame: CGRect(x: 40, y: 100, width: 200, height: 100))
let gradientLayer = CAGradientLayer()
gradientLayer.frame = twoColorView.bounds
gradientLayer.colors = [UIColor.red.cgColor, UIColor.red.cgColor, UIColor.blue.cgColor, UIColor.blue.cgColor]
gradientLayer.locations = [NSNumber(value: 0.0), NSNumber(value: 0.5), NSNumber(value: 0.5), NSNumber(value: 1.0)]
twoColorView.layer.addSublayer(gradientLayer)
,當然你可以風格,進一步查看,如:
twoColorView.layer.cornerRadius = twoColorView.bounds.height/2
twoColorView.layer.masksToBounds = true
它導致這樣的:
編輯:
它可以概括d接受任意數量的顏色。創建一個UIView
擴展並在那裏添加你的邏輯。以這種方式,顏色可以被應用到任何UIView
及其子類,如的UILabel,的UIButton,的UIImageView等
extension UIView {
func addColors(colors: [UIColor]) {
let gradientLayer = CAGradientLayer()
gradientLayer.frame = self.bounds
var colorsArray: [CGColor] = []
var locationsArray: [NSNumber] = []
for (index, color) in colors.enumerated() {
// append same color twice
colorsArray.append(color.cgColor)
colorsArray.append(color.cgColor)
locationsArray.append(NSNumber(value: (1.0/Double(colors.count)) * Double(index)))
locationsArray.append(NSNumber(value: (1.0/Double(colors.count)) * Double(index + 1)))
}
gradientLayer.colors = colorsArray
gradientLayer.locations = locationsArray
self.backgroundColor = .clear
self.layer.addSublayer(gradientLayer)
// This can be done outside of this funciton
self.layer.cornerRadius = self.bounds.height/2
self.layer.masksToBounds = true
}
}
和添加的顏色:
let colorView = UIImageView(frame: CGRect(x: 40, y: 100, width: 200, height: 100))
colorView.addColors(colors: [.red, .green, .blue])
view.addSubview(colorView)
這是結果:
請注意不要在視圖的生命週期中多次調用此函數,因爲它會添加子圖層rs在彼此之上。因此,請在再次致電addColors
之前調用一次或刪除子層。所以當然有改進的餘地。
您應該使用兩種顏色的圖像。它比試圖在圖像視圖中放置兩種顏色更相關。你爲什麼要放兩種顏色?改用圖像! – Lion
要求教程或圖書館在這裏不是一個有效的主題。 –
事情是我需要使它灰色時,它是「不活躍」,我不能應用正常的色調因爲灰色將在2種顏色 –