Я использую одно и то же изображение в разных изображениях с одинаковыми ограничениями, но почему-то последние 2 изображения не сохраняют пропорции, несмотря на ограничения.
Вот код ограничения.
PS: все они имеют следующие 2 строки.(Я просто удалил эти строки из каждой группы, чтобы избежать стены кода).
.contentMode = .scaleAspectFit
.translatesAutoresizingMaskIntoConstraints = false
ImageLineEvents.topAnchor.constraint(equalTo: LabelTitleEvents.bottomAnchor, constant:UI_SPACING_SCROLL).isActive = true
ImageLineEvents.centerXAnchor.constraint(equalTo: ScrollView.centerXAnchor).isActive = true
ImageLineEvents.widthAnchor.constraint(equalTo: VC_UserProfile.view.widthAnchor).isActive = true
ImageLineEvents.widthAnchor.constraint(equalTo: ImageLineEvents.heightAnchor, multiplier: (ImageLineEvents.image?.size.width)! / (ImageLineEvents.image?.size.height)!).isActive = true
ImageLineUpdates.topAnchor.constraint(equalTo: LabelTitleUpdates.bottomAnchor, constant:UI_SPACING_SCROLL).isActive = true
ImageLineUpdates.centerXAnchor.constraint(equalTo: ScrollView.centerXAnchor).isActive = true
ImageLineUpdates.widthAnchor.constraint(equalTo: VC_UserProfile.view.widthAnchor).isActive = true
ImageLineUpdates.widthAnchor.constraint(equalTo: ImageLineUpdates.heightAnchor, multiplier: (ImageLineUpdates.image?.size.width)! / (ImageLineUpdates.image?.size.height)!).isActive = true
ImageLineSoon.topAnchor.constraint(equalTo: LabelTitleSoon.bottomAnchor, constant:UI_SPACING_SCROLL).isActive = true
ImageLineSoon.centerXAnchor.constraint(equalTo: ScrollView.centerXAnchor).isActive = true
ImageLineSoon.widthAnchor.constraint(equalTo: VC_UserProfile.view.widthAnchor).isActive = true
ImageLineSoon.widthAnchor.constraint(equalTo: ImageLineSoon.heightAnchor, multiplier: (ImageLineSoon.image?.size.width)! / (ImageLineSoon.image?.size.height)!).isActive = true
ImageLineToday.topAnchor.constraint(equalTo: LabelTitleToday.bottomAnchor, constant:UI_SPACING_SCROLL).isActive = true
ImageLineToday.centerXAnchor.constraint(equalTo: ScrollView.centerXAnchor).isActive = true
ImageLineToday.widthAnchor.constraint(equalTo: VC_UserProfile.view.widthAnchor).isActive = true
ImageLineToday.widthAnchor.constraint(equalTo: ImageLineToday.heightAnchor, multiplier: (ImageLineToday.image?.size.width)! / (ImageLineToday.image?.size.height)!).isActive = true
Все хорошо врежим портрета, но когда я перехожу в пейзаж, последние 2 изображения почему-то не сохраняют пропорции.У меня есть журналы с каждой ориентации.
print("ar = \(Float((ImageLineEvents.image?.size.width)!) / Float((ImageLineEvents.image?.size.height)!))")
print("ar = \(Float((ImageLineUpdates.image?.size.width)!) / Float((ImageLineUpdates.image?.size.height)!))")
print("ar = \(Float((ImageLineSoon.image?.size.width)!) / Float((ImageLineSoon.image?.size.height)!))")
print("ar = \(Float((ImageLineToday.image?.size.width)!) / Float((ImageLineToday.image?.size.height)!))")
print("w = \(ImageLineEvents.frame.width)")
print("w = \(ImageLineUpdates.frame.width)")
print("w = \(ImageLineSoon.frame.width)")
print("w = \(ImageLineToday.frame.width)")
print("h = \(ImageLineEvents.frame.height)")
print("h = \(ImageLineUpdates.frame.height)")
print("h = \(ImageLineSoon.frame.height)")
print("h = \(ImageLineToday.frame.height)")
Они из портрета, и все как и ожидалось.
ar = 162,5
ar = 162,5
ar = 162,5
ar = 162,5
ш = 335,0
ш = 335,0
ш = 335,0
ш = 335,0
h = 2,0
h = 2,0
h = 2,0
h = 2,0
Тем не менее, если я перехожу в ландшафт, последние 2 имеютразные результаты.
ar = 162,5
ar = 162,5
ar = 162,5
ar = 162,5
w = 684,0
ш = 684,0
ш = 684,0
ш = 684,0
ч = 4,33333333333333
ч = 4,33333333333333
h = 4,0 (почему это не 4,33 ???)
h = 4,0 (почему это не 4,33 ???)
Iпосмотрел миллионы раз, но я до сих пор не могу понять, что с этим не так.Там нет ошибок ограничения.Визуально последние 2 изображения не проходят по краям, потому что они сохраняют пропорции, но высота как-то ниже.Они все внутри ScrollView, но я не понимаю, как это может иметь значение.Любая помощь?
РЕДАКТИРОВАТЬ: Я добавил визуальный результат.Первые 2 ограничения - это первое изображение, последние 2 - последнее изображение.Как вы можете видеть, их ширина не одинакова в ландшафте.Изображение, о котором идет речь, это линия, расположенная чуть ниже заголовка, и она должна распространяться от заголовка, приводя к точечному следу изображения.Все они ведут себя хорошо на портрете, но на ландшафте, последние 2 ведут себя по-разному.
Правильное поведение
НеверноПоведение