#ios #swift #nslayoutconstraint #uicollectionviewflowlayout
#iOS #swift #nslayoutconstraint #uicollectionviewflowlayout
Вопрос:
В UICollectionViewHeader этот код изменяет размер всего идеально, когда заголовок находится на экране, но если я прокручиваю вниз (например, до нижнего колонтитула) и меняю ориентацию, пока нижний колонтитул находится на экране, заголовок не обновляет ограничения и изменение размера не происходит.
func observeOrientation() {
NotificationCenter.default.addObserver(self, selector: #selector(refreshImageConstraints), name: UIDevice.orientationDidChangeNotification, object: nil)
}
@objc func refreshImageConstraints() {
NSLayoutConstraint.deactivate([headImageWidth, headImageHeight, stackWidth])
if frame.width > frame.height {
headImageWidth = headImage.widthAnchor.constraint(equalToConstant: frame.width * (6/7))
headImageHeight = headImage.heightAnchor.constraint(equalToConstant: frame.height * (3/6))
stackWidth = stack.widthAnchor.constraint(equalToConstant: frame.width * (5/7))
} else {
headImageWidth = headImage.widthAnchor.constraint(equalToConstant: frame.width * (6/7) )
headImageHeight = headImage.heightAnchor.constraint(equalToConstant: frame.width * (3/6))
stackWidth = stack.widthAnchor.constraint(equalToConstant: frame.width * (6/7))
}
NSLayoutConstraint.activate([headImageWidth, headImageHeight, stackWidth])
print("DEBUG: Did change orientation")
}
Комментарии:
1. Есть ли конкретная причина, по которой вы вычисляете константу вместо использования
multiplier
?2. Нет, на самом деле, я, скорее всего, исправлю это, когда проведу рефакторинг кода.