使用自动布局使 UIView 全屏

Posted

技术标签:

【中文标题】使用自动布局使 UIView 全屏【英文标题】:make UIView full screen using autolayout 【发布时间】:2015-02-05 15:23:12 【问题描述】:

我开始使用自动布局,我的 UIViewController 的 self.view 不再占据 iPhone 6 或 iPhone 6plus 的整个屏幕。 UIView 的大小是 size = inferred。

我查看了我的 VC 主视图的约束条件,但约束编辑器不允许我选择我希望顶部、左侧、右侧和底部的距离为 0,0,0,0查看到窗口的边缘。

【问题讨论】:

【参考方案1】:

我做了一个在 UIView 下添加白色蒙版的函数(如果你是 UIView 的子类)

func addBackgroundMask()
    backgroundMask = UIView()
    backgroundMask?.backgroundColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 0.6)
    backgroundMask?.setTranslatesAutoresizingMaskIntoConstraints(false)

    let topConstraint = NSLayoutConstraint(item: backgroundMask!, attribute:NSLayoutAttribute.Top, relatedBy:NSLayoutRelation.Equal, toItem:superview, attribute:NSLayoutAttribute.Top, multiplier:1.0, constant:0.0)

    let bottomConstraint = NSLayoutConstraint(item: backgroundMask!, attribute:NSLayoutAttribute.Bottom, relatedBy:NSLayoutRelation.Equal, toItem:superview, attribute:NSLayoutAttribute.Bottom, multiplier:1.0, constant:0.0)

    let leftConstraint = NSLayoutConstraint(item: backgroundMask!, attribute:NSLayoutAttribute.Left, relatedBy:NSLayoutRelation.Equal, toItem:superview, attribute:NSLayoutAttribute.Left, multiplier:1.0, constant:0.0)

    let rightConstraint = NSLayoutConstraint(item: backgroundMask!, attribute:NSLayoutAttribute.Right, relatedBy:NSLayoutRelation.Equal, toItem:superview, attribute:NSLayoutAttribute.Right, multiplier:1.0, constant:0.0)

    superview?.insertSubview(backgroundMask!, belowSubview: self)

    superview?.addConstraint(topConstraint)
    superview?.addConstraint(bottomConstraint)
    superview?.addConstraint(leftConstraint)
    superview?.addConstraint(rightConstraint)


【讨论】:

以上是关于使用自动布局使 UIView 全屏的主要内容,如果未能解决你的问题,请参考以下文章

如何使自动布局与 XIB 中的自定义 UIView 一起使用?

如何使用自动布局在情节提要上使网格并排 uiview 响应

自动布局 - 使视图的尺寸依赖于另一个视图的

如何使 UIScrollView 与自动布局和动态内容一起使用? [复制]

自动布局子视图在 Swift 4 中添加问题

具有自动布局的全屏 UICollectionViewCell