:上記の方法ここでは
/**
To convert an image to grayscale
- parameter image: The UIImage to be converted
- returns: The UIImage after conversion
*/
static func convertToGrayScale(_ image: UIImage?) -> UIImage? {
if image == nil {
return nil
}
let imageRect:CGRect = CGRect(x: 0, y: 0, width: image!.size.width, height: image!.size.height)
let colorSpace = CGColorSpaceCreateDeviceGray()
let width = image!.size.width
let height = image!.size.height
let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.none.rawValue)
let context = CGContext(data: nil, width: Int(width), height: Int(height), bitsPerComponent: 8, bytesPerRow: 0, space: colorSpace, bitmapInfo: bitmapInfo.rawValue)
context?.draw(image!.cgImage!, in: imageRect)
let imageRef = context?.makeImage()
let newImage = UIImage(cgImage: imageRef!)
return newImage
}
が提示ビュー内のすべてのカラー画像のために働くだろうと同じことがmyView.maskView = UIImageView(image: maskImage)
のために使用することができます。
この
はあなたの全体のビューをグレースケールになり、グレースケールのみのラベルとテキストながら、私はこれを使用:上記の方法
// Convert to grayscale
func convertToGrayScaleColor() -> UIColor? {
if self == UIColor.clear {
return UIColor.clear
}
var fRed : CGFloat = 0
var fGreen : CGFloat = 0
var fBlue : CGFloat = 0
var fAlpha: CGFloat = 0
if self.getRed(&fRed, green: &fGreen, blue: &fBlue, alpha: &fAlpha) {
if fRed == 0 && fGreen == 0 && fBlue == 0{
return UIColor.gray
}else{
let grayScaleColor = (fRed + fGreen + fBlue)/3
return UIColor(red: grayScaleColor, green: grayScaleColor, blue: grayScaleColor, alpha: fAlpha)
}
} else {
print("Could not extract RGBA components, so rolling back to default UIColor.grayColor()")
return UIColor.gray
}
}
は一部extension UIColor
です。上記のコードはxcodeを使用してSwift 3.0に書かれています。
答えに何か不安がある場合や混乱している場合は、自由にコメントを残してください。
私はよく分かりませんが、ウィンドウのトップレイヤーで、アルファ0.8のグレーの色でビューを作成するのはどうですか?ビューの下にあるすべてのUI要素は、グレースケールにする必要があります。 – derdida
これを実行した後、コントローラーは対話式オブジェクトになりますか?そのような場合でも、イメージの色は何とか見ることができますが、ユーザーがグレイアウトされたビューとやりとりすることができれば試してみます。 –
いいえ、UIの対話は無効にされます – derdida