无法在UISearchBar中将UITextField的borderStyle设置为None

时间:2013-04-01 21:08:22

标签: ios

我正在尝试删除textborderstyleUITextField的{​​{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

2 个答案:

答案 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属性!它有效!