如何在UISearchBar TextField周围添加1像素灰色边框

klc*_*r89 12 objective-c uiview uisearchbar ios ios7

我试图弄清楚如何在我的应用程序中为我的UISearchBar添加1像素笔触灰色边框.Facebook Messenger应用程序完成了这一点.(见下图).

我知道有的UISearchBar的背景图像属性,但我相信,这是不使用正确的事,因为它延伸出来的图像和整个搜索栏的整个视图重复它.

我非常感谢指向正确方向的指针.

在此输入图像描述

iOS*_*Dev 12

试试这段代码:

//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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Yar*_*Bai 10

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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

要使其四舍五入,您可以使用textField.layer.cornerRadius属性