Начиная с iOS 5, у вас есть великолепный прокси-сервер UIAppearance, который позволит вам устанавливать все эти вещи одной строкой кода, но если вы хотите нацелиться на 4 или ниже, то вы катаетесь самостоятельно - вы вам придется создать свой собственный класс представления, или сделать взлом подвидов. Вы уже начали в этом первом фрагменте, но есть проблема ...
"Правильный" способ взлома подпредставления - перебирать массив subviews
до тех пор, пока вы не найдете представление, соответствующее искомому. В этом случае, что вы хотите сделать, это что-то вроде:
for(UIView* i in [searchBar subviews) ]{
if ([i isKindOfClass:[UITextField class]]) {
//success! do what you want to do and break
break;
}
}
//maybe put some code here if you didn't find what you were looking for
Проблема со взломом подпредставления состоит в том, что иерархия представления может измениться в любое время, без предупреждения, и внезапно (в лучшем случае) ваше приложение не будет выглядеть одинаково или (в худшем случае) зависнет. По этой причине я бы порекомендовал использовать свой собственный или ориентированный на iOS 5, где все очень просто.