From 9f43d4e65fa3b7eb64294ff54ecd6e60c6842629 Mon Sep 17 00:00:00 2001 From: Augustin AFFOGNON Date: Thu, 11 May 2023 20:49:06 +0200 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'README.md'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/README.md b/README.md index b9d48a0..77da5fc 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,50 @@ # SwiftIOSLearning +## * CODE POUR CHANGEMENT DE COULEUR + +import SwiftUI +import Combine + +struct ContentView: View { + @State private var color: Color = .white + + var body: some View { + ZStack { + color + VStack { + Image("Image1") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(height: 200) + .onReceive(Just(UIImage(named: "Image1"))) { uiImage in + if let averageColor = uiImage?.averageColor { + self.color = Color(averageColor) + } + } + .scaledToFit() + .clipShape(RoundedRectangle(cornerRadius: 20)) + .overlay(RoundedRectangle(cornerRadius: 20) + .stroke(Color.gray, lineWidth: 2)) + Spacer() + } + .padding(EdgeInsets.init(top: 32, leading: 12, bottom: 12, trailing: 12)) + } + } + struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } + } +} + +extension UIImage { + var averageColor: UIColor? { + guard let inputImage = CIImage(image: self) else { return nil } + let extent = inputImage.extent + let context = CIContext(options: nil) + let ciFilter = CIFilter(name: "CIAreaAverage", parameters: [kCIInputImageKey: inputImage, kCIInputExtentKey: CIVector(cgRect: extent)])! + var bitmap = [UInt8](repeating: 0, count: 4) + context.render(ciFilter.outputImage!, toBitmap: &bitmap, rowBytes: 4, bounds: CGRect(x: 0, y: 0, width: 1, height: 1), format: .RGBA8, colorSpace: nil) + return UIColor(red: CGFloat(bitmap[0]) / 255, green: CGFloat(bitmap[1]) / 255, blue: CGFloat(bitmap[2]) / 255, alpha: 1.0) + } +