2017-05-05 22 views
1

제공된 목록에서 다양한 body/hair/clothing/eyes/etc 스타일을 선택하여 자신의 2D 아바타 (Bitmoji와 유사)를 만들 수있는 앱 개발 중입니다. 의 이미지. 지금까지 여러 UIImageViews를 서로 겹치게하여 각각의 특정 사용자 정의 요소를 나타내는 레이어링을 수행했습니다. 사용자는 먼저 UIImageView에 할당 할 이미지를 선택할 수 있습니다.이 이미지는 두 가지 컬렉션 뷰에서 요소 유형을 선택한 다음 요소 이미지를 선택합니다. 예를 들어 사용자가 하나의 콜렉션 뷰에서 헤어 유형 카테고리를 클릭하면 다른 콜렉션 뷰의 숫자 목록에서 선택하여 hairTypeImageView의 사진을 변경할 수 있습니다.iOS - 아바타 생성을위한 이미지 레이어 방법

나는이 접근법의 문제점이 분명하다고 생각한다 : 많은 속도를내는 UIImageViews를 필요로한다. 또한 사용자는 음영이나 테두리를 변경하지 않고 각 요소의 기본 색상을 변경할 수 있어야합니다. 내가 지금까지 할 수 있었던 유일한 방법은 각 요소에 대해 두 개의 이미지를 저장하는 것입니다 (하단 레이어 채우기 색상과 상단 레이어 음영 및 테두리 용).

fillColorImageView.image = [fillColorImageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 
[fillColorImageView setTintColor:color]; 

을 눌러 채우기 색상을 변경하십시오. 이 솔루션은 작동하지만 UIImageViews (각 사용자 정의 요소에 대해 두 개)의 양을 두 배로 늘려야하므로 플렉스가 더 효율적이지 않습니다. 게다가 아트웍을 두 배로 만들어야하고 앱이 이미지를 두 배 저장해야합니다. .

누락 된 더 좋은 방법이 있나요?

답변

1

나는 drawRect : :을 호출하여 아바타의 다양한 레이어를 그리는 UIImageView 하위 클래스를 만드는 방법을 살펴 보겠습니다. 이렇게하면 전체 아바타를 그릴 수있는 단일 UIImageView 인스턴스를 가질 수 있습니다.

두 번째 옵션은 Core Graphics를 사용하여 아바타를 렌더링하는 것입니다. Core Graphics 프레임 워크는 풍부한 렌더링 도구 및 기능을 제공하므로 출력을보다 잘 제어해야하는 경우에는이 옵션을 사용하는 것이 좋습니다.

나를 위해, 결정은 얼마나 많은 이미지 조작을해야 할 것인가에 달려 있습니다. 서로 위에 여러 이미지를 쌓아 놓고 몇 가지 색상을 변경하는 것만이라면 UIImageView 하위 클래스를 사용하는 것이 좋습니다. 이러한 방법 중 하나를 들어

은 실제로 단지 비슷한 것을 발견 https://developer.apple.com/library/content/documentation/2DDrawing/Conceptual/DrawingPrintingiOS/HandlingImages/Images.html

+0

살펴보고있는 너무 일 : UIImages의 배열을 반복 UIGraphicsImageContext에 그들을 잡아 한 다음 새 같은 결과 컨텍스트를 저장 UIImage. 이것은 색 편집을 제외한 모든 것을 해결합니다. 나는 주변을 둘러 볼 수 없을 것이라고 생각합니다. – Grambo