- У меня есть
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])