自定义UISearchField是私有的

时间:2012-10-29 10:23:10

标签: ios app-store uisearchbar appstore-approval

我需要自定义UISearchBar:

  • 更改搜索文字颜色
  • 更改favicon

Apple没有提供API。但是,这是可能的解决方案之一:

for(UIView *subView in _searchBar.subviews){
    if([subView isKindOfClass:UITextField.class]){
        UITextField *searchField = (UITextField*)subView;
        searchField.textColor = [UIColor darkGrayColor];
        UIImage *image = [UIImage imageNamed: @"loop.png"];
        UIImageView *iView = [[UIImageView alloc] initWithImage:image];
        searchField.leftView = iView;
    }
}

完美无缺。但我担心苹果可能拒绝该应用程序。我知道这不是私有API,但也不是完全公开的。

有没有人在App Store中有这样的代码?

2 个答案:

答案 0 :(得分:3)

您没有调用任何私有API,因此我几乎可以肯定此代码将通过AppStore验证。请注意,您的代码不是未来证明,Apple可能会更改内部UISearchBar实施,而您的代码可能停止工作。最可靠的解决方案是子类UITextField并推出自己的代码。

话虽如此,这不太可能成为一个问题,并且可以肯定你的代码会起作用。

答案 1 :(得分:1)

在大多数情况下,它不会被苹果检测到。 (太多的应用程序使用类似的方法来修改UIControl) 但是你需要在运行此代码之前检查iOS版本,苹果开发团队可能会在新的iOS版本中更改这些内部结构。

if (ios > 5.0 && ios < 6.0 )
     // your modifies here
else 
     // ....