【发布时间】:2019-05-22 18:45:24
【问题描述】:
- 我有一个
uiview,它使用autolayout约束调整大小。 - 我有一个
uiimageview,我将它作为subview插入,然后在数据库中存储从前/后/上/下边缘到uiview超级视图的距离。 另一个注意事项是原始的uiimageview可以转换和翻译,所以CGPoint、CGAffineTransform和CGRect也被保存。 - 我从数据库中获取每条边的这些“常量”值,然后以编程方式将约束激活到实例化的
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])
【问题讨论】:
-
可能是在玩变换破坏约束逻辑,所以所有计算都不会准确
-
@Sh_Khan 是的,我注释掉了变换,它更接近原始图像......但由于旋转或水平翻转图像,我确实需要变换......有什么方法可以覆盖还是以合作的方式使用它们?
标签: ios swift uiimageview constraints nslayoutconstraint