我想将UISearchBar控件自定义为如下图所示的样式:
首先我应该删除背景视图,然后找出UISearchBar中的UITextfiled,扩展UITextfiled的框架并删除它的边界。
这是我的代码:
UITextField *searchField;
NSUInteger numViews = [self.subviews count];
for(int i = 0; i != numViews; i++) {
if([[self.subviews objectAtIndex:i] isKindOfClass:[UITextField class]]) { //conform?
searchField = [self.subviews objectAtIndex:i];
}
}
if(!(searchField == nil)) {
[searchField setBorderStyle:UITextBorderStyleNone];
searchField.frame = self.frame; //modify the frame
}
[[self.subviews objectAtIndex:0]removeFromSuperview]; //remove the background.
结果是UITextField的边界仍然存在。 :(
我的问题是: 1.为什么我不能修改UISearchBar的UITextField的外观?
2.如何删除UISearchBar中UITextfield的边界。
非常感谢!
答案 0 :(得分:7)
子类UISearchBar并覆盖layoutSubViews以删除搜索栏背景和文本字段边框子视图:
- (void)layoutSubviews
{
[super layoutSubviews];
for (UIView *subview in self.subviews) {
// Remove the default background
if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
[subview removeFromSuperview];
}
// Remove the rounded corners
if ([subview isKindOfClass:NSClassFromString(@"UITextField")]) {
UITextField *textField = (UITextField *)subview;
for (UIView *subsubview in textField.subviews) {
if ([subsubview isKindOfClass:NSClassFromString(@"UITextFieldBorderView")]) {
[subsubview removeFromSuperview];
}
}
}
}
}
答案 1 :(得分:0)
我不确定这一点,但是我怀疑你能够实现UISearchBar
的唯一方式就是创建一个新的{{1}子类。 }}。使用它可以将其设置为与图像中的完全相同。
This post可能对您有所帮助。