Ответ 1
Ответ на этот вопрос таков. Допустим, у вас есть растяжимое изображение, которое растягивается только по ширине и имеет фиксированную высоту (для простоты).
Изображение шириной 31px (фиксированный размер 15px - не растягивается - 1px будет растягиваться)
Предполагая, что ваш слой является подклассом CALayer, ваш метод init должен выглядеть так:
- (id)init
{
self = [super init];
if (self) {
UIImage *stretchableImage = (id)[UIImage imageNamed:@"stretchableImage.png"];
self.contents = (id)stretchableImage.CGImage;
self.contentsScale = [UIScreen mainScreen].scale; //<-needed for the retina display, otherwise our image will not be scaled properly
self.contentsCenter = CGRectMake(15.0/stretchableImage.size.width,0.0/stretchableImage.size.height,1.0/stretchableImage.size.width,0.0/stretchableImage.size.height);
}
return self;
}
в соответствии с документацией содержимое прямоугольника contentCenter должно иметь значения между 0-1.
По умолчанию используется прямоугольник устройства (0,0,0,0) (1,0,1,0), что приводит к масштабированию всего изображения. Если прямоугольник простирается за пределы прямоугольника устройства, результат равен undefined.
Это он. Надеюсь, кто-то найдет это полезным, и это сэкономит время разработки.