2013-03-06 4 views
2

Метод UIImage resizableImageWithCapInsets все хорошо и хорошо подходит для стандартной прямоугольной кнопки с закругленными углами, но я пытаюсь создать кнопку, которая выглядит как облако с неровными краями. Я не могу понять, как наилучшим образом рисовать или создавать его, или как я растяну его, когда попаду в мое приложение. Я говорю о чем-то вроде этого:resizableImageWithCapInsets: resizingMode: UIImageResizingModeTile не работает

enter image description here

пузырьков по бокам облака не должны растягиваться, но новые будут созданы, однако долго/короткие кнопки необходимо. Например, если кнопка должна быть в два раза меньше этого изображения, будет отображаться только 2 пузырька, но если это нужно было быть выше, здесь может быть больше, чем 5, оно должно было бы добавлять и удалять их по мере необходимости , Я бы установил минимальные размеры, чтобы по крайней мере один пузырь всегда был там, предотвращая проблемы, если он стал слишком маленьким. При необходимости сами пузыри могут быть выложены плиткой.

Есть ли у кого-нибудь какие-либо предложения о том, как я могу достичь такого эффекта, будь то с точки зрения разработки программного обеспечения или графического дизайна?

EDIT:

Я пытался сделать это с картинки в поле ниже и следующий код, и это дает результат, как на картинке здесь. Изображение не имеет нужного размера, не говоря уже о черепице. Я проверил, что рамка изображения больше, чем ее отображение здесь. На самом деле это довольно смущает!

cappedCloud = [[UIImage imageNamed: @"cloud.png"] resizableImageWithCapInsets: UIEdgeInsetsMake(9, 9, 9, 9) resizingMode: UIImageResizingModeTile];

[[cell.cloudButton imageView] setContentMode: UIViewContentModeScaleToFill]; 
[cell.cloudButton setImage: cappedCloud forState: UIControlStateNormal]; 
[cell.cloudButton setAlpha: 0.85f]; 

enter image description here

enter image description here

+0

Если это проблема, которую вы видите, то что-то должно быть неправильно с тем, как вы применяете изображение, можете ли вы включить код для того, как вы устанавливаете изображение на этом элементе пользовательского интерфейса? –

+0

Там вы идете. «ScaleToFill» - это то, что я просто пытаюсь сейчас, не имеет никакого значения :( – Luke

+0

Хорошо, проблема в том, что вы пытаетесь установить изображение для кнопки, я взял ваше изображение и сделал это плитка в образе просмотра, глядя на то, как получить правильное изменение размера для кнопки –

ответ

5

Вы, вероятно, хотите, чтобы изучить, как создать tiled resizable image с помощью

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode 

Используя слегка модифицированную версию у наш код, я был в состоянии получить изображение на плитку на кнопке, хотя это не очень хорошо плиток:

UIImage* cappedCloud = [[UIImage imageNamed: @"cloud.png"] resizableImageWithCapInsets: UIEdgeInsetsMake(9, 9, 9, 9) resizingMode: UIImageResizingModeTile]; 

[cloudButton setBackgroundImage:cappedCloud forState:UIControlStateNormal]; 
[cloudButton setAlpha: 0.85f]; 

cloudImage.image = cappedCloud; 

enter image description here

+0

Похоже, что 'UIImageResizingModeTile' доступен только в iOS6. – Luke

+0

@lukech Итак, в этом случае, может быть, у кого-то есть код для рисования черепичного изображения pre-iOS6, но ваша проблема определенно решена черепицей, а не растягиванием. –

+0

Не могли бы вы подробнее рассказать о том, как я Действительно ли это происходит? Я только знаю, как это сделать, просто взяв весь образ и повторив его по данной области, это не то, что я хочу сделать здесь. В документации очень мало упоминается опция черепицы. – Luke

0

Растяжки обрабатывается в вертикальном направлении, а затем в горизонтальном направлении (или наоборот). Поэтому дайте верхние & нижние смещения, учитывая вертикальное направление, которое не должно растягиваться и оставлено & правые смещения для горизонтального направления.

Смежные вопросы