Как добавить 1 пиксель серой границы вокруг UISearchBar TextField
Я пытаюсь понять, как добавить 1-мерную серию в 1 пиксель к моему UISearchBar в моем приложении. Приложение Facebook Messenger выполняет это достаточно хорошо. (см. рис. ниже).
Я знаю, что есть свойство background image для UISearchBar, но я считаю, что это неправильно использовать, поскольку он растягивает изображение и повторяет его по всему виду панели поиска.
Я очень ценю указатели в правильном направлении.
![enter image description here]()
Ответы
Ответ 1
Попробуйте этот код:
//First add the following import and macro:
#import <QuartzCore/QuartzCore.h>
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
//Then change yourSearchBar border:
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
for (id object in [[[yourSearchBar subviews] objectAtIndex:0] subviews])
{
if ([object isKindOfClass:[UITextField class]])
{
UITextField *textFieldObject = (UITextField *)object;
textFieldObject.layer.borderColor = [[UIColor grayColor] CGColor];
textFieldObject.layer.borderWidth = 1.0;
break;
}
}
}
else
{
for (id object in [yourSearchBar subviews])
{
if ([object isKindOfClass:[UITextField class]])
{
UITextField *textFieldObject = (UITextField *)object;
textFieldObject.layer.borderColor = [[UIColor grayColor] CGColor];
textFieldObject.layer.borderWidth = 1.0;
break;
}
}
}
Ответ 2
версия Swift 3
override func viewDidLoad() {
super.viewDidLoad()
for s in searchBar.subviews[0].subviews {
if s is UITextField {
s.layer.borderWidth = 1.0
s.layer.borderColor = UIColor.gray.cgColor
}
}
}
Чтобы сделать это, вы можете использовать свойство textField.layer.cornerRadius
Ответ 3
Эта работа прекрасна:
UITextField *txtSearchField = [yourSearchBar valueForKey:@"_searchField"];
[txtSearchField setBorderStyle:UITextBorderStyleRoundedRect];
txtSearchField.layer.cornerRadius = 4;
txtSearchField.layer.borderWidth = 1.0f;
txtSearchField.layer.borderColor = [[UIColor colorWhatYouWant] CGColor];
не забывайте #import <QuartzCore/QuartzCore.h>
Ответ 4
попробуйте это
self.poundsTxt.layer.borderColor = [[UIColor whiteColor]CGColor];
self.poundsTxt.layer.borderWidth=2.0;
импортируйте ссылку Quartz Core Framework в свой проект и добавьте
import <QuartzCore/QuartzCore.h>
к вашему ViewController.m для работы borderColor и borderWidth.