이미지 (가능한 모든 모양)를 기반으로 마스크를 만들어야합니다. 내가 필요로 :CGPath 이미지
- 적절한 마스크
- 전화 [UIView.layer에 setMask : 위의 층]으로 CGPath와의 CALayer를 만들기
그래서 주요 큰 문제는 검은 색에 따라 CGPath을 설정하는 방법입니다 - 흰색 이미지? 아니면 마스크 을에서 직접 가져올 수 있습니까?
감사합니다. 마스크의
예 이미지 :
이미지 (가능한 모든 모양)를 기반으로 마스크를 만들어야합니다. 내가 필요로 :CGPath 이미지
그래서 주요 큰 문제는 검은 색에 따라 CGPath을 설정하는 방법입니다 - 흰색 이미지? 아니면 마스크 을에서 직접 가져올 수 있습니까?
감사합니다. 마스크의
예 이미지 :
당신은 알파 채널 이미지를 만들어야합니다. CALayer
의 마스크 특성 문서에 따르면
알파 채널 층의 배경 및 여과 배경으로 레이어의 내용을 합성 한 결과와 을 선택 마스크로 사용되는 선택적 층.
그래서 마스크로 사용하려는 레이어에는 알파 채널이 필요합니다. 이미지를 사용하여 이러한 채널을 만들려면 이미지 자체에 알파 채널이 있어야합니다. 따라서 위에 게시 한 흑백 마스크를 이미지의 알파 채널에 복사해야합니다. 특정 이미지의 색상은 무시됩니다. 그런 다음 이미지를로드하고 레이어 내용을 설정 한 다음 해당 레이어를 다른 레이어 마스크로 사용합니다. 이 주변의 뭔가 :
UIImage* imageWithAlphaChannel = [UIImage imageNamed:@"alpha.png"]; // Won't work with jpg
CGImageRef cgImageWithAlpha = [imageWithAlphaChannel CGImage];
CALayer* maskingLayer = [CALayer layer];
maskingLayer.contents = (id)cgImageWithAlpha;
//Assume viewToBeMasked is the view, who's layer needs to be masked
CALayer* layerToBeMasked = viewToBeMasked.layer;
layerToBeMasked.mask = maskingLayer;
maskingLayer.frame = layerToBeMasked.bounds;
//Alternativly use: viewToBeMasked.layer.mask = maskingLayer;
브라우저에서 인코딩 된 착오가 생겼다.
모든 마스크를 png 파일로 저장하면 앱 크기가 커질 수 있습니다. 마스크를 jpg로 저장하고 CoreGraphics 드로잉 기능을 사용하여 런타임에 적절한 알파 버전을 만들 수 있습니다. 그러나 그것은 또 다른 질문입니다 .....
매우 유사한 문제 나는 뭔가에 내가 다시 잠시했다 생각합니다. 기본적으로 Adobe Illustrator에서 파일을 내 보낸 다음 루틴을 실행하여 해당 파일을 CGPath로 변환해야합니다.
당신은이 질문에 대한 내 대답에 그것을 할 방법을 찾을 수 있습니다 :
그건 멋지 네요! 나는 너에게 또 하나의 질문이있다. 마지막 단계를 만들고 UIView의 레이어를 layerToBeMasked로 설정하는 방법. [view.layer addSublayer : layerToBeMasked] 설정이 작동하지 않습니다. 난 layerToBeMasked = view.layer 할려고했지만 둘 다 작동하지 않습니다. 내가 작동하도록 여분의 것을해야합니까? 감사! – Piotr
여기에 하위 계층을 설정할 필요가 없습니다. 레이어의 마스크 속성을 설정합니다. 위의 코드를 더 잘 반영하도록 업데이트했습니다. – tonklon
어떻게 든 나에게 도움이되지 못했습니다. 가면을 설정해야했습니다. 레이어의 프레임과 이제 괜찮습니다. 다시 한 번 감사드립니다! – Piotr