我有一个UITextView,它正在显示文本 当文字不是很大时(我说的是100-200个字),该应用程序就可以正常工作
如果它有非常大的文本(大约10000个单词),则会不断崩溃
代码
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
check(scrollView)
let scrollPos = textView.contentOffset.y
if dragging { return }
if isAppearanceOpened { return }
if scrollPos > 0 {
UIView.animate(withDuration: 0.2, delay: 0, options: .curveEaseInOut, animations: {
if scrollPos <= self.contentOffset {
self.topView.alpha = 1
self.pageView.alpha = 1
self.topViewHeight.constant = 70
} else {
self.topView.alpha = 0
self.pageView.alpha = 0
self.topViewHeight.constant = 0
}
self.view.layoutIfNeeded()
}) { (_) in
if !decelerate { self.recheckEditorPosition() }
}
} else {
UIView.animate(withDuration: 0.2, delay: 0, options: .curveEaseInOut, animations: {
self.topView.alpha = 1
self.pageView.alpha = 1
self.topViewHeight.constant = 70
}) { (_) in
if !decelerate { self.recheckEditorPosition() }
}
}
}
错误
EXC_BAD_ACCESS(代码= 2,地址= 0x16d2a7ef0)
控制台很清楚,所以我有点困惑
如果我要删除self.view.layoutIfNeedee()
,则该应用程序可以正常运行,但是缺少动画
答案 0 :(得分:0)
所以,我从研究中得到了结果 崩溃是由textView contentInset引起的。 当左右inset为0时,它在大文本上运行良好,我的猜测是textView对齐方式,字体等的计算非常耗时,因此编译器给出了一个错误。