ios - 如何添加带约束的 subview ,使 subview 与其父 View 具有相同的框架?

标签 ios swift uiview nslayoutconstraint

UIView 中,我有一个方法 presentView():

public func presentView() {

    UIApplication.sharedApplication().delegate?.window??.addSubview(self)

    let blurEffect = UIBlurEffect(style: .Light)
    let blurEffectView = UIVisualEffectView(effect: blurEffect)
    blurEffectView.backgroundColor = UIColor.yellowColor()
    addSubview(blurEffectView)

    let topConstraint = NSLayoutConstraint(item: blurEffectView, attribute: .Top, relatedBy: .Equal, toItem: self, attribute: .Bottom, multiplier: 1, constant: 0)
    let bottomConstraint = NSLayoutConstraint(item: blurEffectView, attribute: .Bottom, relatedBy: .Equal, toItem: self, attribute: .Top, multiplier: 1, constant: 0)
    let leadingConstraint = NSLayoutConstraint(item: blurEffectView, attribute: .Leading, relatedBy: .Equal, toItem: self, attribute: NSLayoutAttribute.Leading, multiplier: 1, constant: 0)
    let trailingConstraint = NSLayoutConstraint(item: blurEffectView, attribute: .Trailing, relatedBy: .Equal, toItem: self, attribute: NSLayoutAttribute.Trailing, multiplier: 1, constant: 0)

    self.addConstraints([topConstraint, bottomConstraint, leadingConstraint, trailingConstraint])

    print("newframe: \(blurEffectView.frame)")

}

但是某事是错误的,因为这是控制台上的输出:

newframe: (0.0, 0.0, 0.0, 0.0)

结果是:

enter image description here

最佳答案

记住:

blurEffectView.translatesAutoresizingMaskIntoConstraints = false

然后:

let topConstraint = NSLayoutConstraint(item: blurEffectView, attribute: .Top, relatedBy: .Equal, toItem: self, attribute: .Top, multiplier: 1, constant: 0)
let bottomConstraint = NSLayoutConstraint(item: blurEffectView, attribute: .Bottom, relatedBy: .Equal, toItem: self, attribute: .Bottom, multiplier: 1, constant: 0)
let leadingConstraint = NSLayoutConstraint(item: blurEffectView, attribute: .Leading, relatedBy: .Equal, toItem: self, attribute: .Leading, multiplier: 1, constant: 0)
let trailingConstraint = NSLayoutConstraint(item: blurEffectView, attribute: .Trailing, relatedBy: .Equal, toItem: self, attribute: .Trailing, multiplier: 1, constant: 0)

addSubview(blurEffectView)
addConstraints([topConstraint, bottomConstraint, leadingConstraint, trailingConstraint])
layoutIfNeeded()

关于ios - 如何添加带约束的 subview ,使 subview 与其父 View 具有相同的框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32822451/

相关文章:

ios - 火力地堡分析 : No data reflection on "Audiences" tab

ios - TabBar 和 NavigationBar View 部分隐藏

ios - 显示(推送)Segue 留下上一个 View 的印记

objective-c - 将数据从 ViewController 传递到 UIView

ios - 如何获取iCarousel当前可见 View ?

ios - itune/Appstore用户会看到App评论信息吗

ios - ios objective c中的内存管理

ios - 进度 View 无限步?

ios - tableView.reloadData 清除数组 - 索引超出范围

iphone - "Unrasterize"UIView层