Swift 4 - 如何在以编程方式使用约束后获取UIView的边界

时间:2018-03-08 21:29:15

标签: swift autolayout constraints bounds

我真的需要你对这个问题的帮助。我正在以编程方式创建一个UIView对象而不在开始时设置边界。创建后,我向该视图添加约束,以适应屏幕中所需的位置。

但问题是,我想在代码的以下部分使用UIView的bounds属性,但不幸的是,我无法在屏幕上显示的约束集之后获得边界。

下面我有示例代码:

     let previewView = UIView()

     NSLayoutConstraint(item: previewView, attribute: .top, relatedBy: .equal, toItem: upperView, attribute: .bottom, multiplier: 1.0, constant: 0.0).isActive = true

     NSLayoutConstraint(item: previewView, attribute: .bottom, relatedBy: .equal, toItem: self.view, attribute: .bottom, multiplier: 1.0, constant: 0.0).isActive = true


    previewView.widthAnchor.constraint(equalToConstant: self.view.frame.width).isActive = true

    previewView.translatesAutoresizingMaskIntoConstraints = false


    print(previewView.bounds)
   // (0.0, 0.0, 0.0, 0.0) ->>>> How can I get the bounds as it shows on the screen instead of 0,0,0,0

在此之后,当我尝试使用previewView.bounds属性时,它会将其原始大小返回为0.

我如何获得屏幕上显示的界限以及相关的成员'建立 ?

非常感谢你们。

1 个答案:

答案 0 :(得分:3)

您可以在

中访问它
 override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    if once { 
        once = false
        // process here
        print(previewView.bounds) 
    } 
 }

但首先将视图声明为实例变量,在视图中生成once = false

var previewView:UIView! 
var once= true

enter image description here