layoutIfNeeded导致崩溃

时间:2019-01-19 09:53:49

标签: ios swift textview

我有一个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(),则该应用程序可以正常运行,但是缺少动画

1 个答案:

答案 0 :(得分:0)

所以,我从研究中得到了结果 崩溃是由textView contentInset引起的。 当左右inset为0时,它在大文本上运行良好,我的猜测是textView对齐方式,字体等的计算非常耗时,因此编译器给出了一个错误。