2014-07-12 2 views
3

Swift에서 Xcode 6 Beta를 사용하고 있으며 화면의 손가락이 회색과 같은 특정 UIColour를 터치 할 때 호출되는 메서드를 만들고 싶습니다.Xcode Swift - 화면의 색상 터치 감지

어떻게하면됩니까?

+1

프레임 워크에 내장 된 빠른 해결책이 없습니다. 기본적으로 터치의 정확한 픽셀 위치를 감지 한 다음 뷰를 이미지로 변환하고 마지막으로 이미지의 오른쪽 픽셀에서 어떤 색상인지 테스트하는 것으로 구성됩니다. 뷰가 변경되지 않으면 이미지를 캐시하고 싶을 것입니다. 이러한 것들을 각각 검색하여 솔루션을 구축 할 수 있습니다. – drewag

답변

4

이 질문은 이미 Objective-C 님에게 응답되었습니다. 코드는 Swift에서 약간 다르지만 어쨌든 변환되었습니다.

extension UIView 
{ 
    func colorOfPoint (point: CGPoint) -> UIColor 
    { 
     var pixel = UnsafePointer<CUnsignedChar>.alloc(4) 
     let colorSpace = CGColorSpaceCreateDeviceRGB() 
     let bitmapInfo = CGBitmapInfo.fromRaw(CGImageAlphaInfo.PremultipliedLast.toRaw())! 
     let context = CGBitmapContextCreate(pixel, 1, 1, 8, 4, colorSpace, bitmapInfo) 

     CGContextTranslateCTM(context, -point.x, -point.y) 

     self.layer.renderInContext(context) 

     CGContextRelease(context) 
     CGColorSpaceRelease(colorSpace) 

     return UIColor(red: Float(pixel [0])/255.0, green: Float (pixel [1])/255.0, blue: Float (pixel [2])/255.0 , alpha: Float (pixel [3])/255.0) 
    } 
} 

보기 컨트롤러에서;

override func touchesBegan(touches: NSSet!, withEvent event: UIEvent!) 
{ 
    let touch : UITouch = event.allTouches().anyObject() as UITouch 
    let location = touch.locationInView(self.view) 
    pickedColor = self.view.colorOfPoint (location) 
    // Do something with picked color. 
}