水平自动布局约束在UIScrollView / UIView上有一些奇怪的偏移量

问题描述 投票:2回答:1

上周,我进入了自动布局。今天在编写我的第一个应用程序时,我遇到了一个带有UIScrollView和自动布局的奇怪“错误”。我在这里找不到任何类似的问题,因此我创建了一个新主题。

这里是一些示例代码:

    self.view.backgroundColor = UIColor.greenColor()

    let view = UIScrollView()
    view.setTranslatesAutoresizingMaskIntoConstraints(false)
    view.backgroundColor = UIColor.redColor()
    self.view.addSubview(view)

    let constraintH = NSLayoutConstraint.constraintsWithVisualFormat("H:|-[view]-|", options: NSLayoutFormatOptions(0), metrics: nil, views: ["view": view])

    // two options fixing this bug: "H:|-0-[view]-0-|" or "H:|[view]|"
    // only horizontal constraint has this issue

    let constraintV = NSLayoutConstraint.constraintsWithVisualFormat("V:|-[view]-|", options: NSLayoutFormatOptions(0), metrics: nil, views: ["view": view])

    self.view.addConstraints(constraintH)
    self.view.addConstraints(constraintV)

[首先,我认为原因是iOS 8.3 Beta SDK,但iOS 8.1 SDK也存在问题。因此,是我自己还是应该向Apple报告的自动布局错误?

UPDATE:我将代码从UIScrollView修改为UIView,因此您可以看到此错误也适用于普通的UIView。

enter image description here

uiscrollview autolayout ios8.1
1个回答
1
投票

[水平空间是Margin,这是iOS 8中引入的。您可以尝试在iOS 7.1仿真器上运行它,并且没有空白。

您是对的,删除破折号应予以解决

let constraintH = NSLayoutConstraint.constraintsWithVisualFormat("H:|[view]|", options: NSLayoutFormatOptions(0), metrics: nil, views: ["view": view])  

此外,如果您使用的是UIScrollView和AutoLayout,则应阅读此https://developer.apple.com/library/ios/technotes/tn2154/_index.html

© www.soinside.com 2019 - 2024. All rights reserved.