以编程方式将约束应用于UIImageView子视图

时间:2019-05-22 18:45:25

标签: ios swift uiimageview constraints nslayoutconstraint

  1. 我有一个uiview,它受autolayout约束调整大小。
  2. 我有一个uiimageview,我将其插入为subview,然后在数据库中存储了从前缘/后缘/顶部/底部边缘到uiview超级视图的距离。 另一个注意事项是原始uiimageview可以进行转换和翻译,因此CGPointCGAffineTransformCGRect也可以保存。
  3. 我从数据库中获取每个边的这些“恒定”值,然后以编程方式将约束激活到实例化的uiimageview,以复制插入的原始uiimageview

我添加约束的原因是uiimageview会按比例适应uiview大小的变化。

我的问题是我的代码有些古怪,我无法解决为什么我无法根据已存储,提取并重新应用的数据来复制原始uiimageview

当我以编程方式使用约束时,我无疑会迷路,不胜感激。

//Storing constraint constants of original uiimageview in original container uiview
let leadingConstraint = originalImageView.frame.minX
let trailingConstraint = oldContainer.frame.maxX - originalImageView.frame.maxX
let topConstraint = originalImageView.frame.minY
let bottomConstraint = oldContainer.frame.maxY - originalImageView.frame.maxY

//Fetching and applying constants to new uiimageview in new container uiview (Separate operation from the above! Above takes place first!)

newImageView.bounds = CGRect(x: 0, y: 0, width: 80, height: 80)
newImageView.center = CGPoint(x: saved.x, y: saved.y)
newImageView.transform = CGAffineTransform(a: saved.a, b: saved.b, c: saved.c, d: saved.d, tx: saved.tx, ty: gifForm.ty)

newContainer.insertSubview(newImageView, at: 0)

newImageView.translatesAutoresizingMaskIntoConstraints = false
let leadingConstraint = newImageView.leadingAnchor.constraint(equalTo: newContainer.leadingAnchor, constant: saved.leadingConstant)
let trailingConstraint = newImageView.trailingAnchor.constraint(equalTo: newContainer.trailingAnchor, constant: -saved.trailingConstant)
let topConstraint = newImageView.topAnchor.constraint(equalTo: newContainer.topAnchor, constant: saved.topConstant)
let bottomConstraint = newImageView.bottomAnchor.constraint(equalTo: newContainer.bottomAnchor, constant: -saved.bottomConstant)
NSLayoutConstraint.activate([leadingConstraint, trailingConstraint, topConstraint, bottomConstraint])

1 个答案:

答案 0 :(得分:0)

尝试仅使用约束(将TypeError设置为col = 'column_with_unserializable_type' data_df_1[col] = data_df_1[col].map(lambda x: x.get_response) )或不使用约束(保留translatesAutoresizingMaskIntoConstraints)。

您不能同时使用两者,这意味着如果您打算使用约束,则不能使用false之类的东西,而必须使用true.center之类的对等物。

也不确定这是否只是疏忽大意,但是最后四行使用与上面相同的属性名称。