Это можно сделать намного лучше и проще с растягиваемым изображением:
UIImage *fieldBGImage = [[UIImage imageNamed:@"input.png"] stretchableImageWithLeftCapWidth:20 topCapHeight:20];
[myUITextField setBackground:fieldBGImage];
Представьте, что фон текстового поля разделен на три части. Средняя секция, которая может быть растянута и заглушки на концах. Создайте изображение, которое должно быть достаточно длинным, чтобы содержать один пиксель этого повторяющегося раздела (очень короткое текстовое поле), а затем создать растягиваемое изображение из него, используя stretchableImageWithLeftCapWidth: topCapHeight
. Передайте ширину левой торцевой крышки в 'leftCapWidth.' Вы можете также растянуть его по вертикали, но если фоновое изображение будет иметь такую же высоту, как и текстовое поле, оно не будет иметь эффекта.
Если вы знакомы с 9-фрагментным масштабированием во Flash или Illustrator, это точно такая же концепция, за исключением того, что средние секции имеют ширину всего один пиксель / высоту.
Преимущество этого заключается в том, что вам не нужно беспокоиться о масштабировании нескольких многоуровневых объектов, и вы можете изменить размер текстовых полей в любое время, и фон останется в такте. Работает и на других элементах!