2015-05-02 4 views
5

Я хочу повторить следующее изображение:Repeat изображение по горизонтали и по вертикали

enter image description here

для достижения следующего фона:

enter image description here

Я попробовал несколько кодов следующим образом:

bluePatternView.backgroundColor = [UIColor colorWithPatternImage: 
    [[UIImage imageNamed:@"blue_pattern.png"] stretchableImageWithLeftCapWidth:0 topCapHeight:0]]; 

и:

bluePatternView.backgroundColor = 
    [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"blue_pattern.png"]]; 

Я также попытался нарисовать изображение с помощью CGContextDrawTiledImage без успеха.

Как это можно сделать ?!

EDIT: результат реализации luk2302. пожалуйста, дайте ему признание upvoting

bluePatternView.backgroundColor = 
    [UIColor colorWithPatternImage:[UIImage imageNamed:@"blue_pattern.png"]]; 

результат:

enter image description here

+0

первая линия не работает !? вы пытались просто использовать 'bluePatternView.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @" blue_pattern.png "]];' – luk2302

+0

'stretchableImageWithLeftCapWidth' устарел btw - если вы хотите использовать его функциональность, вместо этого используйте' resizableImageWithCapInsets'. – luk2302

+0

@ luk2302 Вы сделали это раньше? вы можете помочь? – hasan83

ответ

4

Как мой комментарий уже сказал: использовать

bluePatternView.backgroundColor = 
    [UIColor colorWithPatternImage:[UIImage imageNamed:@"blue_pattern.png"]]; 

Вы не хотите, чтобы растянуть изображение. Пусть UIKit позаботится о повторении.

Предполагая, что ваш bluePatternView является фактическим большим представлением, для которого вы хотите установить шаблон в качестве фона. Возможно, вы задаете свойство фона неправильного представления, если этот код все еще не работает.

Примечание: дублируя ЖЕ изображение с @ 2x и 3x @ расширение приведет к behaive правильно для лучших устройств разрешением.

enter image description here

+0

Я пробовал это, он повторяет его по горизонтали и растягивает его по вертикали – hasan83

+0

должен изменить режим просмотра. Масштаб для заполнения или Аспект Fit. Существует в построителе интерфейса – hasan83

+0

Теперь они рассматривают контент, а не фон . Правильно ли я предполагаю, что у вас есть большой вид, настроенный в IB и установленный фон через код выше !? – luk2302

-1

это с пыльник Метод с использованием stretchableImageWithLeftCapWidth как таким образом: -

UIImage *backgroundImage = [[UIImage imageNamed:@"SheetBackground.png"] stretchableImageWithLeftCapWidth:0.5 topCapHeight:0]; 

как вол ваш пример необходимости : -

UIImage *backgroundImage = [[UIImage imageNamed:@"q4Ses.png"] stretchableImageWithLeftCapWidth:0.5 topCapHeight:0]; 

    [_scro setBackgroundColor:[UIColor colorWithPatternImage:backgroundImage]]; 
+0

Я потрогал это, вы копируете его из другого ответа, как есть! Я попробую еще раз! – hasan83

+0

Я также пробую этот код его работы для меня, поэтому я даю ответ –

+0

этот код растягивает изображение, не повторяйте его. – hasan83

18

Я нашел решение в images.xcassets,

Шаг 1: - Поместите изображение в изображения.xcassets

Шаг 2: - Нажмите на изображение, затем нажмите на правом нижнем углу написано «Показать Строгание» Put image

Шаг 3: - Нажмите на Start Строгание
start slicing

Шаг 4: - Нажмите на кнопку «Slice Horizontally and Vertically»
Slice horizontally and vertically

Шаг 5: - Здесь вы увидите 3-горизонтальные и 3-вертикальные линии среза.
enter image description here

  • Поместите самую левую вертикальную линию левой части изображения и как правой, так и большинство линий правой части изображения.
  • Поместите самую верхнюю строку в верхнюю часть изображения, а нижнюю часть - в нижней части изображения.
  • Таким образом, конечный результат будет выглядеть следующим образом.

enter image description here

Шаг 6: - Используйте этот образ.

И теперь изображение будет повторено.

enter image description here

Примечание: - Если вы дадите нарезка в 2 раза изображение будет повторяться только 2x изображения, для 3х изображений вы должны сделать то же нарезку.

Example by Apple

+0

Это работает для меня очень хорошо, хотя мой образ рисунка имеет очень маленький дизайн. Благодарю. –

+0

это правильный ответ! спасибо –

+0

Что именно означает * разрезание * означает в этом контексте? или это то же самое, что * повторять * что-то? – Honey

0
bluePatternView.backgroundColor = UIColor(patternImage: UIImage(named: "blue_pattern")!) 
+1

Хотя этот фрагмент кода приветствуется и может оказать некоторую помощь, было бы [значительно улучшено, если бы оно включало объяснение] (// meta.stackexchange.com/q/114762) из ​​* how * и * why *, это решает проблема. Помните, что вы отвечаете на вопрос читателей в будущем, а не только на человека, который спрашивает сейчас! Пожалуйста, отредактируйте свой ответ, чтобы добавить объяснение, и укажите, какие ограничения и допущения применяются. –

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