Intereting Posts
Почему аппаратное ускорение не работает на моем представлении? Android Lollipop, добавить всплывающее меню из заголовка на панели инструментов Разница между onStart () и onResume () Как программно заполнить раздел напоминаний в приложении «Календарь» Android-устройства? CertificateException – OpenSSLX509CertificateFactory $ ParsingException Андроид, использующий Renderscript для размытия эффектов, вызывает A / libc: фатальный сигнал 7 (SIGBUS), код 2, ошибка addr 0x9e6fa000 in tid 482 (AsyncTask # 1) Текст текста текстового текста Android Как я могу играть в mp3 без загрузки с URL? Android – настройка тайм-аута для AsyncTask? Intel HAXM эквивалент для AMD в ОС Windows Содержимое Android SMS (контент: // sms / sent) Дефект изображения с помощью ScriptIntrinsicBlur из библиотеки поддержки Единичное тестирование сетевого ответа. Работает при отладке, а не при фактическом запуске Android: Как настроить последнюю версию FFMPEG в студии Android? Как выйти из полноэкранного веб-приложения

Есть ли 9-патч-загрузчик для iPhone?

Android имеет хороший способ определения растягиваемых изображений, называемых девятью патчами. См. Эти документы для описания концепции. Идея состоит в том, чтобы окружить png-изображение с помощью 1-пиксельной границы, где вы можете определить растяжимые области и размеры заполнения изображения. Это абсолютно блестяще, и я хотел бы использовать эту идею в своем приложении для iPhone. Прежде чем писать свой собственный 9-патч для загрузчика UIImage, я подумал, что увижу, если он уже существует. Google не возвращает никаких результатов, поэтому у меня нет большой надежды, но это не больно спрашивать, верно? 🙂

EDIT: Люди, я ценю ответы, но я знаю о stretchableImageWithLeftCapWidth... Я ищу код, который принимает путь @"foo.9.png" и возвращает растяжимый UIImage . Этот код, несомненно, будет использовать stretchableImageWithLeftCapWidth... внутри. Я уверен, что сам мог бы написать код, используя этот метод. Но я прошу, если кто-то еще это сделал.

Solutions Collecting From Web of "Есть ли 9-патч-загрузчик для iPhone?"

Я получил электронное письмо от программного обеспечения Tortuga22, который сообщил мне, что создал такую ​​библиотеку и выпустил ее под лицензией Apache:

Объявление: http://blog.tortuga22.com/2010/05/31/announcing-tortuga-22-ninepatch/

Исходный код: 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]; 

Также смотрите свойство contentStretch UIView. Он более надежный и хорошо управляемый, чем растяжимыйImageWithLeftCapWidth. В основном, это работает, просто определяя растяжимый прямоугольник в вашем изображении и автоматически создавая масштабированный девятикратный патч. Этот внутренний прямоугольник может быть любым – он даже не должен находиться в центре изображения. Плюс в отличие от stretchableImage этот метод будет правильно сокращать графику и вести себя так, как ожидалось, для графики с подсветкой или блеском. Я не могу придумать ни одного приложения реального мира, где вы хотели бы больше, чем это.

Да, UIImage действительно поддерживает что-то вроде этого. Видеть

- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight и документация для leftCapWidth и topCapHeight

В основном изображение не растягивается в области leftCapWidth пикселей слева и справа и topCapHeight пикселей сверху и снизу. Когда изображение масштабируется, область внутри этих границ подвержена растяжению.

Все изображения UIImage поддерживают это. По умолчанию все изображения растягиваются, но вы можете устанавливать кепки с свойствами leftCapWidth и topCapHeight или вы можете сгенерировать их из существующего UIImage с помощью - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight .

Обратите внимание, что в реализации Apple, когда вы устанавливаете одно или оба из этих значений, растягиваемая область вынуждена быть одним пикселом в высоту / в ширину.