【问题标题】:is it ok to access subviews of uiviews可以访问uiview的子视图吗
【发布时间】:2011-05-18 20:05:40
【问题描述】:

我已经看到了许多巧妙的想法来按摩视图和控件以完全按照我们想要的方式查看,其中一些在 SO 上列出:

  1. 透明UISearchBar:iPad/iPhone uiSearchbar transparent background
  2. 不同颜色UISegmentedControl:UISegmentedControl selected segment color

我想知道,这合法吗?每当有人对[[view subviews] objectAtIndex:0] 之类的东西进行硬编码时,似乎都会涉及一些黑客元素,但它似乎无处不在……有人可以对此发表评论并给出一些观点吗?按照规则书可以吗?有没有人发布过这样的生产代码并被苹果接受了?

【问题讨论】:

  • 如果无法访问子视图,Apple 为什么要记录并公开subviews 属性?
  • 我同意 BoltClock。他们明确地赋予你这种权力。这取决于你用它做什么。苹果很擅长划清界限。
  • 我猜,但不清楚视图的子视图是如何管理的。也许将来一个子视图可能先出现,另一个子视图后出现,两者都具有相同的视觉外观,因此依赖硬编码索引可能会中断?我显然在抛出假设......

标签: ios uiview subviews


【解决方案1】:

它作为 API 的一部分公开,因此是合法的。我已经在 App Store 中的一个应用程序上完成了它,我知道其他人也这样做了。

【讨论】:

    【解决方案2】:

    几乎所有好看的应用都做到了这一点,并且获得了很好的批准。当您决定这样做时,只需为可能会破坏您正在做的事情的新版本 iOS 做好准备,并准备好立即发布更新

    【讨论】:

      【解决方案3】:

      仅仅因为您能够做某事,并不意味着它适用于所有地方。在某些情况下,访问视图的子视图的能力是必要的,但是我会担心依赖特定的 UIView 在层次结构中的特定位置来获取您不维护的组件。无法保证特定子视图在 sdk 的未来版本中始终是第零个子视图。

      如果这是唯一的方法,那么您可能别无选择,但请记住,它是您的应用程序的一个脆弱部分,应该针对所有平台上的每个 sdk 版本进行充分测试。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-29
        • 2012-02-27
        • 1970-01-01
        相关资源
        最近更新 更多