문제

안드로이드는 9 패치라고 불리는 신축성 이미지를 정의하는 좋은 방법을 가지고 있습니다. 보다 이 문서 개념에 대한 설명을 위해. 아이디어는 1 픽셀 테두리로 PNG 이미지를 둘러싸는 것이며, 이는 신축성 영역과 이미지의 패딩 치수를 정의 할 수 있습니다. 이것은 절대적으로 훌륭하고 iPhone 앱에서 아이디어를 사용하고 싶습니다. Uiimage 로더에 나만의 9 패치를 쓰기 전에 이미 존재하는지 알았습니다. Google은 결과를 반환하지 않으므로 희망이 많지 않지만 물어 보는 것은 아프지 않습니다. :-)

편집하다: 여러분, 답변에 감사하지만 stretchableImageWithLeftCapWidth.... 나는 길을 따르는 코드를 찾고 있습니다 @"foo.9.png" 신축성을 반환합니다 UIImage. 이 코드는 의심 할 여지없이 사용됩니다 stretchableImageWithLeftCapWidth... 내부적. 나는 그 방법을 사용하여 코드를 직접 쓸 수 있다고 확신합니다. 그러나 나는 다른 누군가가 이미 그것을했는지 묻습니다.

도움이 되었습니까?

해결책

나는 Tortuga22 소프트웨어로부터 이메일을 받았으며,이 라이브러리를 생성하고 Apache 라이센스에 따라 해제되었음을 알렸다.

발표: http://blog.tortuga22.com/2010/05/31/announcing-tortuga-22-1inpatch/

소스 코드: http://github.com/tortuga22/tortuga22-ninepatch

예제 사용 :

// loads-and-caches ninepatch and rendered image of requested size
UIImage buttonImg = [TUNinePatchCache imageOfSize:buttonSize 
                                forNinePatchNamed:@"buttonNormalBackground"];
[self.buttonNeedingBackground setImage:buttonImg
                       forControlState:UIControlStateNormal];

다른 팁

또한 uiview의 ContentsTretch 속성을 살펴보십시오. 그것은 capwidth와 함께 스트레치 가능한이지보다 더 강력하고 잘 행동합니다. 기본적으로 이미지 내에서 스트레치 가능한 사각형을 정의하고 스케일링 된 9 패치를 자동으로 생성하여 작동합니다. 이 내부 사각형은 무엇이든 할 수 있습니다. 이미지의 중앙에있을 필요조차 없습니다. 또한 StretchableImage와 달리이 방법은 그래픽을 제대로 축소하고 조명 또는 광택이있는 그래픽에 대해 예상대로 작동합니다. 나는 당신이 이것보다 더 많은 것을 원할 실제 응용 프로그램을 생각할 수 없습니다.

UIImage 이와 비슷한 것을 지원합니다. 보다

- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight 그리고 LeftCapWidth 및 TopCapeight에 대한 문서

기본적으로 이미지는 왼쪽과 오른쪽 가장자리에서 왼쪽과 오른쪽 가장자리 픽셀과 상단과 하단의 TopCapeight 픽셀에서 늘어나지 않습니다. 이미지가 스케일링되면이 한계 내부의 영역은 스트레칭을받습니다.

모두 UIImage 이미지는 이것을 기본적으로 지원합니다. 기본적으로 전체 이미지는 신축성이 있지만 leftCapWidth 그리고 topCapHeight 속성 또는 기존에서 속성을 생성 할 수 있습니다 UIImage 이랑 - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight 방법.

Apple의 구현에서 이러한 값 중 하나 또는 둘 다를 설정하면 신축성 영역은 단일 픽셀 높이/너비가되어야합니다.

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