Существует ли загрузчик с девятью патчами для iPhone?

Хотя я нахожу большинство ответов здесь вполне правильными, многие из них содержат ненужные ошибки. Расширение параметров POSIX дает вам все, что вам нужно:

[ "${host#user}" != "${host}" ]

и

[ "${host#node}" != "${host}" ]

${var#expr} убирает наименьший префикс, соответствующий expr из ${var} и возвращает это. Следовательно, если ${host} не начинается с user (node), то ${host#user} (${host#node}) совпадает с ${host}.

expr позволяет fnmatch() подстановочные знаки, таким образом ${host#node??} и друзья также работают.

25
задан Nikhil 5 July 2012 в 03:58
поделиться

4 ответа

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

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

Source code: 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];
24
ответ дан 28 November 2019 в 21:37
поделиться

Да UIImage поддерживает . См.

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

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

3
ответ дан 28 November 2019 в 21:37
поделиться

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

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

1
ответ дан 28 November 2019 в 21:37
поделиться

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

4
ответ дан 28 November 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: