帧高打印0

时间:2016-09-13 19:15:33

标签: swift uiview uiimageview uikit

正如问题所述,当我尝试在UIView类中设置图像视图时,要使其框架高度的角半径除以2,它不起作用,所以我决定打印框架高度它是0.

此课程中每个视图的高度或宽度打印0我不知道为什么...提前感谢您的答案。

2 个答案:

答案 0 :(得分:0)

默认情况下,视图没有任何大小。您必须设置某种约束或视图的框架。

<强> 1。约束viewDidLoad()中设置约束时,视图不会立即获得大小。为了读取大小,您必须在另一个名为viewDidLayoutSubviews()的函数中读取它。在布置所有视图后调用此函数。以下是视图将获得其父视图大小的示例:

    var newView:UIView?

    override func viewDidLoad() {
        super.viewDidLoad()

        newView = UIView()

        newView!.translatesAutoresizingMaskIntoConstraints = false
        self.view.addSubview(newView!)

        newView!.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true
        newView!.rightAnchor.constraint(equalTo: self.view.rightAnchor).isActive = true
        newView!.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
        newView!.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
    }


    override func viewDidLayoutSubviews() {
        print(newView!.frame)
    }

<强> 2。框架:通过直接设置视图框架,您可以立即读取其大小。下面是一个示例,其中视图的框架设置为与其父视图相同的边界:

    var newView:UIView?

    override func viewDidLoad() {
        super.viewDidLoad()

        newView = UIView()

        newView?.frame = view.bounds

        newView!.translatesAutoresizingMaskIntoConstraints = false
        self.view.addSubview(newView!)

        print(newView!.frame)
    }

答案 1 :(得分:0)

我发现了问题。在调用UI View类时,我没有通过参数传递此视图的实际帧。因此,当执行此类初始值设定项时,帧始终为0.