Des*_*ner 10 uitextfield uisearchbar ios quartz-core
我正在尝试为UISearchbar自定义文本字段.下图显示了我完成的一半工作.

我有UISearchbar的子类,并从我的视图控制器调用它.我正试图从文本字段中删除那些深灰色线条.下面是添加到viewcontroller子视图的UISearchbar的实现.
searchbar = [[SearchBar alloc] initWithFrame:CGRectMake(35,78, 250, 17)];
searchbar.backgroundColor = [UIColor clearColor];
searchbar.layer.borderColor = [[UIColor clearColor] CGColor];
searchbar.layer.borderWidth = 0;
for(UIView *view in searchbar.subviews){
if([view isKindOfClass:[UITextField class]]){
UITextField *tf= (UITextField *)view;
tf.layer.borderColor = [[UIColor clearColor] CGColor];
tf.delegate = self;
break;
}
}
[self.view addSubview:searchbar];
searchbar.delegate = self;
Run Code Online (Sandbox Code Playgroud)
UISearchBar子类:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
-(void)layoutSubviews{
UITextField *searchField;
[[[self subviews] objectAtIndex:0] removeFromSuperview];
[self setTintColor:[UIColor clearColor]];
self.clipsToBounds = YES;
NSUInteger numViews = [self.subviews count];
for(int i = 0; i < numViews; i++) {
if([[self.subviews objectAtIndex:i] isKindOfClass:[UITextField class]]) {
searchField = [self.subviews objectAtIndex:i];
searchField.leftViewMode = UITextFieldViewModeNever;
searchField.backgroundColor = [UIColor clearColor];
}
}
if(!(searchField == nil)) {
searchField.backgroundColor = [UIColor clearColor];
searchField.textColor = [UIColor blackColor];
searchField.frame = CGRectMake(self.frame.origin.x,self.frame.origin.y,self.frame.size.width,self.frame.size.height-10);
[searchField setBorderStyle:UITextBorderStyleRoundedRect];
}
[super layoutSubviews];
}
Run Code Online (Sandbox Code Playgroud)
我想尝试这样的事情:文本字段不应该有任何边界.图标是扁平的UIImageView.

小智 50
这是从UISearchBar子视图层次结构获取文本字段并根据需要设置其属性的简单方法
UITextField *txfSearchField = [searchbar valueForKey:@"_searchField"];
[txfSearchField setBackgroundColor:[UIColor whiteColor]];
[txfSearchField setLeftView:UITextFieldViewModeNever];
[txfSearchField setBorderStyle:UITextBorderStyleRoundedRect];
txfSearchField.layer.borderWidth = 8.0f;
txfSearchField.layer.cornerRadius = 10.0f;
txfSearchField.layer.borderColor = [UIColor clearColor].CGColor;
Run Code Online (Sandbox Code Playgroud)
Nic*_*247 12
如果您不想使用未记录的功能或使用图像,请使用以下命令:
CGSize size = CGSizeMake(30, 30);
// create context with transparent background
UIGraphicsBeginImageContextWithOptions(size, NO, 1);
// Add a clip before drawing anything, in the shape of an rounded rect
[[UIBezierPath bezierPathWithRoundedRect:CGRectMake(0,0,30,30)
cornerRadius:2.0] addClip];
[[UIColor whiteColor] setFill];
UIRectFill(CGRectMake(0, 0, size.width, size.height));
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self.searchBar setSearchFieldBackgroundImage:image forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)
iOS 13.x 和 Swift 5.x:
执行以下操作以访问UITextFieldin UISearchBar。
extension UISearchBar {
/// Returns the`UITextField` that is placed inside the text field.
var textField: UITextField {
if #available(iOS 13, *) {
return searchTextField
} else {
return self.value(forKey: "_searchField") as! UITextField
}
}
}
Run Code Online (Sandbox Code Playgroud)
从IOS-5开始,您有外观代理,请参阅:http: //developer.apple.com/library/ios/#documentation/uikit/reference/UISearchBar_Class/Reference/Reference.html(有两个部分称为"自定义外观" ",检查两者).
这是一个工作示例,它修改了应用程序中的所有UISearchBars:
[[UISearchBar appearance] setSearchFieldBackgroundImage:[UIImage imageNamed:@"text_box"] forState:UIControlStateNormal];
[[UISearchBar appearance] setImage:[UIImage imageNamed:@"search_icon"] forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];
mysearchBar.tintColor = [UIColor whiteColor];
Run Code Online (Sandbox Code Playgroud)
小智 5
对于仍在寻找答案的用户,Apple已将searchTextField属性添加到iOS 13 searchTextField中的UISearchBar中。它是一个继承自UITextField 的UISeachTextField。
let searchBar = UISearchBar()
var searchField : UITextField
if #available(iOS 13.0, *) {
searchField = searchBar.searchTextField
} else {
searchField = //One of the other methods listed
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33389 次 |
| 最近记录: |