首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIDynamicAnimator项( in:)在iOS 11中崩溃

UIDynamicAnimator项( in:)在iOS 11中崩溃
EN

Stack Overflow用户
提问于 2017-08-19 18:14:20
回答 1查看 309关注 0票数 1

在iOS 11 (Xcode 9 beta 5)中,我调用UIDynamicAnimator的items(in:)方法并立即崩溃:

NSArray元素与Swift数组元素类型匹配失败

到底怎么回事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-19 18:14:20

你发现了一个窃听器。(向苹果公司提交,雷达33979954。)希望它很快就能修好,但在那之前,这里有一个解决办法:

代码语言:javascript
复制
extension UIDynamicAnimator {
    func views(in rect: CGRect) -> [UIView] {
        let nsitems = self.items(in: rect) as NSArray
        return nsitems.flatMap{$0 as? UIView}
    }
}

现在调用view(in:)而不是items(in:),一切都会好起来的。

问题是正在将虚假的对象放入从items(in:)返回的数组中。由于这些虚假的对象,数组不能跨越从objects到Swift的桥梁;返回的数组以Swift格式键入为[UIDynamicItem],但是数组包含的不是UIDynamicItem对象。

扩建工程围绕着这座桥而不是过桥。我们停留在NSArray目标-C世界,过滤掉虚假的对象,然后跨过桥。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45774897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档