3
Swift에서 Xcode 6 Beta를 사용하고 있으며 화면의 손가락이 회색과 같은 특정 UIColour를 터치 할 때 호출되는 메서드를 만들고 싶습니다.Xcode Swift - 화면의 색상 터치 감지
어떻게하면됩니까?
Swift에서 Xcode 6 Beta를 사용하고 있으며 화면의 손가락이 회색과 같은 특정 UIColour를 터치 할 때 호출되는 메서드를 만들고 싶습니다.Xcode Swift - 화면의 색상 터치 감지
어떻게하면됩니까?
이 질문은 이미 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.
}
프레임 워크에 내장 된 빠른 해결책이 없습니다. 기본적으로 터치의 정확한 픽셀 위치를 감지 한 다음 뷰를 이미지로 변환하고 마지막으로 이미지의 오른쪽 픽셀에서 어떤 색상인지 테스트하는 것으로 구성됩니다. 뷰가 변경되지 않으면 이미지를 캐시하고 싶을 것입니다. 이러한 것들을 각각 검색하여 솔루션을 구축 할 수 있습니다. – drewag