从UITableView / UITableViewCell访问私有类

时间:2015-04-17 09:49:41

标签: ios uitableview right-to-left

对于某些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。 谢谢!

5 个答案:

答案 0 :(得分:2)

未授权使用私有API。

来自Apple Review Guide:

  

2.5使用非公共API的应用将被拒绝

所以它可能会通过一次,但它不是garantie,我建议你不要使用私有API。

答案 1 :(得分:0)

我曾经多次尝试解决UIAlertViewUINavigationBar的某些问题,之前没问题。即使是方法调整也是合法的。

答案 2 :(得分:0)

我已经提交了一些访问多个私有方法的应用程序,并且在审核过程中很好,但是当Apple推出iOS 8时,大多数方法都发生了变化,我不得不摆脱它们。所以,这很好,但不推荐

答案 3 :(得分:0)

随着iOS 9的发布和完整的RTL支持,不再需要这样的解决方法。

答案 4 :(得分:-1)

修饰

首先, Apple可能不接受您的应用(正如您在指南中看到的那样,他们不接受私有API访问)或者他们可能接受它并在更新或新版本中拒绝它。 如果他们在未来的操作系统版本中接受了您的应用程序(我已经发布了一些类似代码的应用程序),那么这个标识符或非公共类(您使用内省找到的)可能会被Apple更改,这可能会使您的应用程序无法正常工作