0
В UIView
У меня есть метод presentView()
:Как добавить subview с ограничениями, чтобы сделать subview с тем же фреймом, что и его супервизор?
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)")
}
но STH это неправильно, потому что это выход на консоли:
newframe: (0.0, 0.0, 0.0, 0.0)
и результат:
Если я правильно читать, 'self' является' UIView'. Затем вы должны добавить ограничения к 'self', а не' blurEffectView'. –
@ DánielNagy Я обновил вопрос, вы можете помочь мне решить эту проблему? –
Я думаю, до тех пор, пока вид не будет выложен, вы не получите его фактического кадра. Поэтому после 'self.addConstraints' вы не получите его прямо сейчас. –