Я получил текстуру, которая на самом деле короче, чем мой UIButton.
Я получил эту текстуру:
И я должен создать эту кнопку:
Как я должен растягивать (не черепицу), эту текстуру? Растяжение в горизонтальном направлении
Thnx
Я получил текстуру, которая на самом деле короче, чем мой UIButton.
Я получил эту текстуру:
И я должен создать эту кнопку:
Как я должен растягивать (не черепицу), эту текстуру? Растяжение в горизонтальном направлении
Thnx
Из приведенных примеров изображений Я уверен, что вы ищете UIImage
resizableImageWithCapInsets:
UIImage *originalImage = [UIImage imageNamed:@"myImage.png"];
UIEdgeInsets insets = UIEdgeInsetsMake(top, left, bottom, right);
UIImage *stretchableImage = [originalImage resizableImageWithCapInsets:insets];
[myButton setBackgroundImage:stretchableImage forState:UIControlStateNormal];
// the image will be stretched to fill the button, if you resize it.
Значения в структуре UIEdgeInsets определяют поля, которые вы не хотите растягивать. Ваши левые и правые значения могут быть примерно такими:
Верхнее и нижнее значения могут быть либо 0 (если вы не хотите изменять размер кнопки по вертикали), либо, вероятно, половину общей высоты.
С помощью Xcode 6 (и iOS7 +) вы можете использовать редактор среза при работе с объектами изображений. Переключить режим нарезки с помощью меню Редактор → Показать slicing или нажать кнопку Показать slicing, когда вы выбираете конкретное изображение с помощью редактора (показано ниже).
Затем вы можете выбрать изображение для определенной шкалы отображения и правил перетаскивания или отредактировать значения вставки вручную.
После этого вы можете выбрать это изображение в Interface Builder для UIButton Фоновое изображение (представление кнопки IB может выглядеть плохо, но при запуске должно быть хорошо).
Мои кнопки выглядят хорошо (работает iOS 7.1 и iOS 8).
Не разбивая, я полагаю, вы не можете использовать
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets
Способ делать то, что вы хотите использовать:
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0); // should be proportionally larger
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextDrawImage(context, (CGRect){{0,0}, newSize}, [yourImage CGImage]);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
Использовать метод stretchableImageWithLeftCapWidth:topCapHeight:
.
Обратитесь: https://github.com/boctor/idev-recipes/tree/master/StretchableImages
Или используя Растягиваемые изображения:
UIImage* imgbkg =[[UIImage imageNamed: @"my_bkg_image.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:10];
[_button setBackgroundImage: imgbkg forState: UIControlStateNormal];
Используйте 0, если вы не хотите растягивать определенную сторону.