渲染的图像大小与框架高度不符(快速)

时间:2019-04-27 19:13:42

标签: ios swift nslayoutconstraint

我先向您道歉,因为这很简单,但是几天来我一直在试图解决这个问题,经过大量搜索后还是无法解决。

当我检查通过限制条件以编程方式创建的图像的高度时,其尺寸与渲染的尺寸不匹配。

// Earth Image Setup
view.addSubview(earthImageView)
earthImageView.bottomAnchor.constraint(equalTo: loginTextViewTitle.topAnchor, constant: -standardSpacer).isActive = true
earthImageView.widthAnchor.constraint(equalToConstant: 500).isActive = true
earthImageView.heightAnchor.constraint(equalToConstant: 500).isActive = true
earthImageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true

// Value of earthImageViewHeight is 276.  Why isn't it 500?
let earthImageViewHeight = earthImageView.frame.size.height

我看到276来自原始@ 1x图像的像素高度。但是,如何获得实际的渲染高度?

我认为这可能与points vs pixels有关,但事实并非如此。

1 个答案:

答案 0 :(得分:0)

原因是视图尚未完全布局。布置好之后,您就可以使用约束来设置其他约束,这就是上面问题背后的问题。

post和此post很好地解释了正在发生的事情以及如何对其进行管理。对于我的特殊情况打电话...

public void changeColourScheme(Color c) {
   UIManager.put("Panel.background", c);
   SwingUtilities.updateComponentTreeUI(frame); //instace of your frame
}

...在我的动画块开始之前,然后相对于已经布置的另一幅重新调整我正在制作动画的图像的大小。