对于某些RTL目的,我需要调整某些子视图的框架,例如' _UITableViewCellSeparatorView
'在UITableViewCell
和' UITableViewIndex
'在UITableView
。
这是我的代码:
for (UIView *view in [self subviews]) {
// separator view
if ([view isKindOfClass:NSClassFromString(@"_UITableViewCellSeparatorView")]) {
CGRect frame = view.frame;
frame.origin.x = 0;
view.frame = frame;
}
}
if ([self.superview isKindOfClass:[UITableView class]]) {
UITableView* tableView = (UITableView*)self.superview;
UIView* indexView = [[tableView subviews] lastObject];
if ([indexView isKindOfClass:NSClassFromString(@"UITableViewIndex")]) {
indexViewWidth = indexView.frame.size.width;
}
}
我想知道Apple审核小组是否会通过这些更改? 我只知道我们不能使用或调用私有API。 谢谢!
答案 0 :(得分:2)
未授权使用私有API。
来自Apple Review Guide:
2.5使用非公共API的应用将被拒绝
所以它可能会通过一次,但它不是garantie,我建议你不要使用私有API。
答案 1 :(得分:0)
我曾经多次尝试解决UIAlertView
和UINavigationBar
的某些问题,之前没问题。即使是方法调整也是合法的。
答案 2 :(得分:0)
我已经提交了一些访问多个私有方法的应用程序,并且在审核过程中很好,但是当Apple推出iOS 8时,大多数方法都发生了变化,我不得不摆脱它们。所以,这很好,但不推荐
答案 3 :(得分:0)
随着iOS 9的发布和完整的RTL支持,不再需要这样的解决方法。
答案 4 :(得分:-1)
修饰
首先, Apple可能不接受您的应用(正如您在指南中看到的那样,他们不接受私有API访问)或者他们可能接受它并在更新或新版本中拒绝它。 如果他们在未来的操作系统版本中接受了您的应用程序(我已经发布了一些类似代码的应用程序),那么这个标识符或非公共类(您使用内省找到的)可能会被Apple更改,这可能会使您的应用程序无法正常工作