我正在尝试删除textborderstyle
中UITextField
的{{1}}。我知道我正在引用正确的对象,因为我可以将UISearchBar
更改为TextBorderStyle
并看到明显的变化。
我尝试使用以下代码对UISearchBar进行子类化:
RoundedRect
我也在课堂上试过这个:
- (void)layoutSubviews {
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];
}
[super layoutSubviews];
}
这些都不奏效。默认情况下,如果我手动将其设置为UITextField *txtSearchField = [_searchBar valueForKey:@"_searchField"];
[txtSearchField setBackgroundColor:[UIColor clearColor]];
[txtSearchField setBorderStyle:UITextBorderStyleNone];
,则似乎有UITextBorderStyleLine
。遗憾的是,我还没有找到一种方法来删除边框样式。有谁知道如何做到这一点?我想弄清楚这一点,因为我需要我的搜索栏看起来像None
。我现在正在辩论只是在幕后切换到UITextField
。
答案 0 :(得分:1)
我很确定实现这一目标的唯一方法是继承UISearchBar!
在子类化后,请在layoutSubviews方法中尝试使用此代码!
- (void)layoutSubviews {
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.textColor = [UIColor whiteColor];
[searchField setBackground: [UIImage imageNamed:@"buscador.png"] ];
[searchField setBorderStyle:UITextBorderStyleNone];
}
[super layoutSubviews];
}
此处发现的问题remove the border of uitextfield in uisearchbar可以回答您的初步问题!
您还可以参考How to customize apperance of UISearchBar了解详情!
希望这有帮助!
答案 1 :(得分:1)
只是不要忽视评论(我刚才这样做,当我登陆同一个问题并提出这个问题时)。如果以编程方式将您的UITextField的borderStyle设置为“未”设置为UITextBorderStyleNone,则在设置其borderStyle之前尝试设置UITextField的background或backgroundColor属性!它有效!