搜索具有私有 API 类名的子视图会被拒绝吗?
Posted
技术标签:
【中文标题】搜索具有私有 API 类名的子视图会被拒绝吗?【英文标题】:Will searching for a subview with a private API class name be rejected? 【发布时间】:2019-12-12 19:58:34 【问题描述】:Apple 最近为UICollectionViews
推出了UICollectionViewCompositionalLayout
,非常棒。它们唯一的限制是,当将orthogonalScrollingBehavior
设置为continuous
时,collectionView 的滚动视图委托方法和contentOffset
丢失了,因为“滚动行为”是通过完全不同的滚动视图而不给用户来完成的。
对于一个非必要的纯精细功能,我需要访问集合视图的contentOffset
,当使用新的UICollectionViewCompositionalLayout
时,它始终是(0, 0)
。但是,如果我只是简单地将UIScrollView
抽象出来,那么我可以检查contentOffset
并用它进行必要的计算。
我实现这个的代码:
let view = collectionView.subviews.first(where: view in
return String(describing: type(of: view)) == "_UICollectionViewOrthogonalScrollerEmbeddedScrollView"
)
return view as? UIScrollView
我知道这可能会在明天发生变化,并在发布新版本的 ios 时破坏此代码。正如我所说,这主要是我非常想拥有的一个很好的功能,但它对应用程序的其余部分几乎是无关紧要的。除此之外,这会让我因“使用”私有 API 而被拒绝吗?
【问题讨论】:
【参考方案1】:您可以使用visibleItemsInvalidationHandler 来获取 contentOffset
layoutSection.visibleItemsInvalidationHandler = ( (visibleItems, point, env) in
print(point)
)
【讨论】:
当时不知道这个解决方案!以上是关于搜索具有私有 API 类名的子视图会被拒绝吗?的主要内容,如果未能解决你的问题,请参考以下文章
通过 iOS 应用程序的 webview 付款(例如 iOS 的 PayPal API 或信用卡)会被苹果应用商店拒绝吗?
在不破坏约束的情况下将 UIView 的子视图移植到 UIScrollView?
在没有私有 API 的情况下以纵向 MPMoviePlayerController 播放视频 - 我会被 Apple 拒绝吗?