滚动视图错误以编程方式自动布局

Posted

技术标签:

【中文标题】滚动视图错误以编程方式自动布局【英文标题】:Auto Layout Programmatically with Scroll View Error 【发布时间】:2016-06-24 22:27:56 【问题描述】:

我试图在 ViewController 内的 paging-scrollView 中添加一个视图,但我遇到了很多自动布局问题(所有这些代码都是程序化的,非 Storyboard)。

第一组约束正常工作,但第二组(svfirstView)导致以下错误:libc++abi.dylib: terminating with uncaught exception of type NSException

非常感谢您对此问题的任何帮助,代码如下:

override func viewDidLoad() 
    super.viewDidLoad()

    view.backgroundColor = .whiteColor()

    sv.backgroundColor = .redColor()
    view.addSubview(sv)

    sv.translatesAutoresizingMaskIntoConstraints = false
    view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[sv]|", options: .DirectionLeadingToTrailing, metrics: nil, views: ["sv": sv]))
    view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[sv]|", options: .DirectionLeadingToTrailing, metrics: nil, views: ["sv": sv]))
    sv.pagingEnabled = true

    let firstView = UIView()
    firstView.backgroundColor = .greenColor()
    sv.addSubview(firstView)
    firstView.translatesAutoresizingMaskIntoConstraints = false
    sv.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[f]|", options: .DirectionLeadingToTrailing, metrics: nil, views: ["fv": firstView]))
    sv.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[fv]|", options: .DirectionLeadingToTrailing, metrics: nil, views: ["fv": firstView]))

【问题讨论】:

在您的一种视觉格式中使用“[f]”而不是“[fv]” 哇,就是这样!非常感谢。令人惊讶的是调试不能告诉我... 【参考方案1】:

正如@dan 指出的那样,视觉格式的字符串中有错字。我会留下这篇文章,以防有人碰巧遇到类似的问题。要点:

terminating with uncaught exception of type NSException 带有自动布局可能是由视觉字符串中的拼写错误引起的。

【讨论】:

以上是关于滚动视图错误以编程方式自动布局的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式布局 UIScrollView,并为其子视图添加了自动布局,但它不滚动

UIScrollView 不使用自动布局滚动(内容视图框架大小以编程方式更改)

使用自动布局iOS以编程方式滚动到特定页面/位置

如何以编程方式使用自动布局添加自定义视图

以编程方式将自动布局添加到肋骨中添加的现有自动布局视图

基于在 Storyboard 中使用自动布局创建的另一个视图,以编程方式使用框架创建视图