나는 여기와 비슷한 접근법을 사용하여 뷰를 마스크 할 수있었습니다 : How to mask UIViews in iOS 하지만이 마스크 된 뷰에서 터치를 감지해야합니다. Gesture recognisers
버튼은 기본적으로 마스크를 무시하고 bounds
영역에서 터치를 감지합니다. 그래서 내 마스크 이미지에서 CGPath
을 얻을 수 있다면 터치를 다루는 것이 쉬울 것이라고 생각합니다. 마스크 이미지에서 CGPath
을 얻는 방법에 대한 제안이 있으십니까?알파 채널이있는 이미지에서 CGPath를 얻을 수 있습니까?
3
A
답변
2
당신은 UIGestureRecognizer
의 대리자를 설정할 수 있습니다 및 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
1보다 우선합니다. 인식기의보기
- (CGPoint)locationInView:(UIView *)view
2 터치의 위치를 가져옵니다. 해당 위치에서 이미지의 알파 채널을 찾으십시오. 이를 위해이 코드를 사용하십시오 (효율성을 위해 투명 값을 전체 이미지에 대해 미리 계산하여 버퍼에 저장하므로 매번 알파 버퍼를 복사 할 필요가 없습니다). 단일 픽셀을했다.이 post 보면, 한 번에 전체 이미지를 수행하는 방법을 참조하십시오.
unsigned char pixelData[1] = {0};
CGContextRef context = CGBitmapContextCreate(pixelData, 1, 1, 8, 1, NULL, kCGImageAlphaOnly);
UIGraphicsPushContext(context);
[im drawAtPoint:CGPointMake(-point.x, -point.y)];
UIGraphicsPopContext();
CGContextRelease(context);
CGFloat alphaChannel = pixel[0]/255.0;
BOOL transparent = alphaChannel < 0.01;
그 값을 바탕으로
-
또는 아니오
관련 문제
- 1. 알파 채널이있는 WPF 3D 텍스처
- 2. 알파 채널이있는 이미지의 "스트레이트"버전
- 3. 투명도가있는 PNG로 알파 채널이있는 FLV 비디오를 변환합니다.
- 4. BMP 파일에서 알파 채널이있는 HBITMAP을 만듭니다.
- 5. 알파 채널이있는 PNG 상단에 투명 색상을 중첩하십시오.
- 6. IImgCtx를 사용하여 알파 채널이있는 이미지를로드하려면 어떻게해야합니까?
- 7. AVFoundation (OS X)은 알파 채널이있는 비디오의 투명한 재생을 지원합니까?
- 8. 알파 채널이있는 이미지를 사용자 정의 배경색이있는 클립 보드에 복사 하시겠습니까?
- 9. CGPath를 채울 수 없습니다.
- 10. Direct2D를 사용하는 리소스에서 알파 채널이있는 32 비트 그리기
- 11. 알파 채널이있는 비트 맵 쉐이더. (알파는 검은 색을 그리는가?)
- 12. 알파 채널이있는 두 이미지의 PIL 병합 - 예상대로 작동하지 않습니다.
- 13. 어떤 종류의 정보를 디지털 이미지에서 얻을 수 있습니까?
- 14. 알파 이미지에서 이음새를 제거하기 위해 블렌딩
- 15. CGPath를 사용하면 어떤 이점이 있습니까?
- 16. SVGkit에서 어떻게 CGPathRef를 얻을 수 있습니까? CAKeyframeAnimation을위한 CGPath를 생성하는 더 나은 솔루션?
- 17. Java에서 BufferedImage 알파 마스크 설정
- 18. CGPath를 사용하여 선을 그립니다.
- 19. 이미지의 너비와 높이를 어떻게 얻을 수 있습니까?
- 20. FrontBuffer에 알파 값이 있습니까?
- 21. CGPath를 UIImage로 변환
- 22. iPhone OS의 PNG 이미지에서 깨끗한 알파 채널 정보를 얻으려면 어떻게해야합니까?
- 23. x 픽셀만큼 CGPath를 늘릴 수있는 방법이 있습니까?
- 24. 그래디언트로 CGPath를 스트로킹 하시겠습니까?
- 25. Tiff 이미지에서 설명/키워드를 가져올 수 있습니까?
- 26. 알파 채널이있는 비트 맵 그리기 : 조언 해주십시오. (일부 솔루션 및 속도 문제)
- 27. 리퍼러를 얻을 수 있습니까?
- 28. CGPath에 CGPath를 클리핑
- 29. CGPath를 파일에 저장하는 방법
- 30. drawRect 밖으로 cgpath를 만듭니다.
고마워요, 지금은이 방법을 고수 하겠지만 CGImageRef에서 CGPath를 얻을 수 있다면 궁금합니다. 답변을 표시하지 않더라도 괜찮 으면 좋겠어요. 아직 허용 된 투표까지해라. – dariaa
어떤 종류의 가장자리 추출 알고리즘을 사용하지 않는다면 상자 밖에서도 사용할 수 있다고 생각하지 않습니다. 그리고 그때조차도 CGPath는 근사치 일뿐입니다. – mprivat