0

我们是否允许修改默认 iOS 控件的子视图,例如 UIDatePicker?我的应用程序有一个极简/扁平的 UI,默认的日期选择器与该样式不匹配。我能找到修改它的唯一方法是遍历其子视图并隐藏添加阴影等的子视图,如下所示:

UIView *background = (UIView *)[[self pickerViews].subviews objectAtIndex:0];
background.hidden = YES;

这是允许的还是会让我的应用程序被拒绝?我实际上并没有弄乱控件或其功能,只是弄乱了它的外观。

4

3 回答 3

2

虽然您可能不会立即被拒绝,但将来当控件的子视图更改时,您可能会看到意外的行为。建立您自己的自定义控件或在公共 API 中找到接近您想要的外观的方法可能是一个更好的主意。

于 2013-02-21T00:55:33.083 回答
1

它并不是真正的“私有 API”——它完全记录在 SDK 中。但是,您依赖于记录的行为(即子视图 0 是您要隐藏的行为),因此您需要小心。

您的代码有两个潜在问题:

  • 如果订单发生变化,它将隐藏错误的视图(检查视图类通常用于防止这种情况发生)
  • 如果选择器没有子视图,它将崩溃(这似乎不太可能发生;当您访问例如索引 6 处的视图时,这会成为一个更大的问题)。

您还需要做两件事:

  • 保留一份清单,列出您所做的任何事情,这些事情可能会在未来的操作系统版本中被破坏。
  • 检查 iOS 测试版中的东西是否仍然有效,并尽早这样做!
于 2013-02-21T05:04:08.807 回答
0

不建议更改未通过 API 公开的内容。将来苹果可能会删除该特定索引处的子视图。最好避免这种方法。尝试在 UI 或实现方面寻找其他选项。

于 2013-02-21T01:08:14.100 回答