문제

나는 iPhone UI에 사용자 정의 버튼을 추가하는 과정에 있으며 Apple의 앱에서 유리처럼 보이게 만들고 싶습니다. 나는 기본 유리 이미지가 좋지만 원하는 각 색조에 대해 별도의 이미지를 가져 가기를 싫어합니다 (빨간색, 녹색, 파란색 등).

그레이 스케일 PNG를로드하고 원하는 색상으로 조정하는 방법이 있습니까? 더 좋은 점은 사용자 정의 이미지를 전혀로드하지 않고 Apple의 유리처럼 보이는 방법이 있습니까?

도움이 되었습니까?

해결책

내가 아는 1 라이너 방법은 없지만 기본 그레이스 스케일 이미지를 가져 와서 단색으로 구성하여 원하는 효과를 얻을 수 있습니다. 핵심 그래픽 문서를 살펴보면 12 가지가 넘는 다른 합성 방법 (예 : 색상 화상)이 있음을 알 수 있으며 일부 조합은 원하는 효과를 생성 할 수 있습니다.

다른 팁

조금 늦었지만 나와 같은 누군가가 이런 종류의 정보를 검색하는 경우 : UISegmentedControl 단일 버튼으로로 설정하십시오 momentary, 그것을 설정합니다 tintColor. 이런 식으로, 당신이 색상이있는만큼 많은 PNG를 준비 할 필요가 없으며, 프레임 워크는 당신을 위해 모든 렌더링을 처리합니다.

예시:

UISegmentedControl *cancelButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Cancel"]];
[cancelButton setSegmentedControlStyle:UISegmentedControlStyleBar];
[cancelButton setTintColor:[UIColor colorWithRed:0.8 green:0.3 blue:0.3 alpha:1.0]];
[cancelButton setMomentary:YES];
[cancelButton addTarget:self action:@selector(didTapCancel:) forControlEvents:UIControlEventValueChanged];
[self addSubview:cancelButton];
[cancelButton release];

항상 우수한 "Cocoa with Love"사이트에는 샘플이 있습니다. Coregraphic에서 광택 그라디언트를 그리는 것

iPhone UI에 대해 잘 모르겠지만 단일 PNG를 사용하여 색상 변형 그래픽을 가질 수 있습니다.

즉,이 페이지의 로고 (왼쪽 상단).

제품

상점

이것을 사용하십시오 PNG

대체 텍스트 http://47degrees.com/images/logos/47_degrees.png

나는 당신이 유리가 되려면 착색으로 배경색 세트가 필요할 것이라고 가정합니다.

나는 이것을했고 그것은 아주 잘 작동합니다.

iOS : Greyscale PNG에 RGB 필터 적용

그러나 부정 행위입니다. 추가하고 있습니다. (예 : 각 픽셀의 빨간색 구성 요소), r_dest = r_src + r_tint

세밀한 제어를 원한다면 예를 들어 RGB 구성 요소를 평균하여 (적절한 가중치로) 평균 (적절한 가중치로)을 통해 각 픽셀의 그리스 스케일 값을 추출한 다음 색조 로이 값을 곱할 수 있으므로 결과 색상은 Greyscale (SR입니다. , sg, sb) * {tr, tg, tb}

이를 위해서는 메모리 덩어리를 생성 하고이 청크에 끌리는 비트 맵 컨텍스트를 만들고,이 컨텍스트에 이미지를 그리며, 안전 유지를 위해 전체 메모리 청크를 복사하고, 처리, 사본에서 데이터 가져 와서 원래 백업 저장소를 수정해야합니다. 원래 백업 스토어에서 이미지를 추출하고 할당 한 모든 것을 확보합니다.

RGBA 픽셀 바이트 데이터에서 uiimage를 재구성하는 문제

이 라이브러리는 당신을 위해 모든 것을 수행했으며, 가장 효율적인 경로는 아니지만 작업을 완료합니다. IIRC 그는 Calloc을 사용해야 할 때 Malloc을 사용합니다.

결국 연락처 편집보기에서 "Contact Delet Contact"버튼에 사용 된 렌더링과 밀접하게 일치하는 나만의 사용자 정의 버튼을 만들었습니다.

관심있는 사람들을 위해 Github에서 찾을 수 있습니다.

pftintedbutton

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top