从 UITableView/UITableViewCell 访问私人 class
Access private class from UITableView/UITableViewCell
出于某些 RTL 目的,我需要调整某些子视图的框架,例如 UITableViewCell
中的“_UITableViewCellSeparatorView
”和 UITableView
中的“UITableViewIndex
”。
这是我的代码:
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;
}
}
不知苹果审核组是否会通过这些改动?
我只知道我们不能使用或调用私有API。
谢谢!
修改
首先,Apple 可能不接受您的应用程序(如您在指南中所见,他们不接受私人 API 访问)或他们接受它并在更新或新版本中拒绝它。
如果他们在未来接受了您的应用程序(我已经发布了一些具有类似代码的应用程序)OS 是否发布此标识符 public 类(您使用自省发现)可能会被 Apple 更改并且它可能会使您的应用程序无法正常工作
之前为了解决UIAlertView
和UINavigationBar
的一些问题我做了几次,没关系。甚至像 method swizzling 这样的事情也是合法的。
未授权使用私有 API。
来自 Apple 评论指南:
2.5 Apps that use non-public APIs will be rejected
所以它可能会通过一次,但它不是保证,我建议你不要使用私人 APIs。
我已经提交了一些访问几个私有方法的应用程序,并且在审核过程中没有问题,但是当Apple推出iOS 8时,大多数方法都发生了变化,我不得不摆脱它们。所以,可以,但不推荐
随着 iOS 9 的发布和完整的 RTL 支持,不再需要像这样的解决方法。
出于某些 RTL 目的,我需要调整某些子视图的框架,例如 UITableViewCell
中的“_UITableViewCellSeparatorView
”和 UITableView
中的“UITableViewIndex
”。
这是我的代码:
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;
}
}
不知苹果审核组是否会通过这些改动? 我只知道我们不能使用或调用私有API。 谢谢!
修改
首先,Apple 可能不接受您的应用程序(如您在指南中所见,他们不接受私人 API 访问)或他们接受它并在更新或新版本中拒绝它。 如果他们在未来接受了您的应用程序(我已经发布了一些具有类似代码的应用程序)OS 是否发布此标识符 public 类(您使用自省发现)可能会被 Apple 更改并且它可能会使您的应用程序无法正常工作
之前为了解决UIAlertView
和UINavigationBar
的一些问题我做了几次,没关系。甚至像 method swizzling 这样的事情也是合法的。
未授权使用私有 API。
来自 Apple 评论指南:
2.5 Apps that use non-public APIs will be rejected
所以它可能会通过一次,但它不是保证,我建议你不要使用私人 APIs。
我已经提交了一些访问几个私有方法的应用程序,并且在审核过程中没有问题,但是当Apple推出iOS 8时,大多数方法都发生了变化,我不得不摆脱它们。所以,可以,但不推荐
随着 iOS 9 的发布和完整的 RTL 支持,不再需要像这样的解决方法。