Wykrywanie dotyka tylko nieprzezroczystych pikseli UIImageView, efektywnie

Jak wykryłbyś dotyk tylko na nieprzezroczystych pikselach aUIImageView, wydajnie?

Rozważmy obraz taki jak poniżej, wyświetlany za pomocąUIImageView. Celem jest sprawienie, aby rozpoznawacze gestów reagowały tylko wtedy, gdy dotyk zdarzy się w nieprzezroczystym (w tym przypadku czarnym) obszarze obrazu.

PomysłyNadpisaniehitTest:withEvent: lubpointInside:withEvent:, chociaż takie podejście może być bardzo nieefektywne, ponieważ metody te są wywoływane wielokrotnie podczas zdarzenia dotykowego.Sprawdzanie, czy pojedynczy piksel jest przezroczysty, może spowodować nieoczekiwane rezultaty, ponieważ palce są większe niż jeden piksel. Sprawdzanie okrągłego obszaru pikseli wokół punktu uderzenia lub próba znalezienia przezroczystej ścieżki w kierunku krawędzi może działać lepiej.PremiaDobrze byłoby rozróżnić zewnętrzne i wewnętrzne przezroczyste piksele obrazu. W przykładzie przezroczyste piksele wewnątrz zera również powinny być uważane za ważne.Co się stanie, jeśli obraz ma transformację?Czy przetwarzanie obrazu można przyspieszyć sprzętowo?

questionAnswers(3)

yourAnswerToTheQuestion