【问题标题】:Is customising UISearchField is private正在自定义 UISearchField 是私有的
【发布时间】:2012-10-29 10:23:09
【问题描述】:

我需要自定义 UISearchBar:

  • 更改搜索文本颜色
  • 更改网站图标

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 有这样的代码的应用程序?

【问题讨论】:

    标签: ios app-store uisearchbar appstore-approval


    【解决方案1】:

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

    话虽如此,这不太可能成为问题,并且可以肯定您的代码可以正常工作。

    【讨论】:

    • 感谢您的回答。但我需要绝对确定。我想听听有人在 App Store 中使用这种代码的应用程序。
    • @Artem Kalachev - 我在应用商店中有类似的代码。关键是要防御性地编写它,这样如果内部结构发生变化,您的应用程序就不会崩溃。
    • 我的应用程序中也有这个丑陋的 hack。到目前为止没有问题。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-08
      • 2017-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 2020-10-04
      • 1970-01-01
      相关资源
      最近更新 更多