Я пытаюсь создать интерфейс, который показывает план этажа с маркерами в фиксированных положениях, поэтому, когда пользователь масштабирует или прокручивает план этажа, маркеры остаются в том же положении относительно изображения плана этажа.Заблокировать позицию UIView относительно UIScrollView
До сих пор я пытался сделать это с UIScrollView, который держит в UIImageView, а затем я попытался добавить фиктивный подвид
let view = UIView(frame: CGRect(origin: CGPoint(x: 400, y: 200), size: CGSize(width: 36, height: 36)))
view.backgroundColor = UIColor.redColor()
scrollView.addSubview(view)
но происхождение (в моем примере 400,200) является относительно экрана, что означает, что манекен подвью отображается только при достаточно увеличенном масштабировании и затем скользит вдоль, если вы просматриваете.
Не могу понять, как это исправить. Может быть, я должен использовать некоторые другие классы UIKit?
Спасибо, это было так очевидно. Вы случайно не знаете, есть ли способ сделать эти «фиктивные» представления одинаковыми по размеру независимо от уровня масштабирования, кроме расчета их размера и положения при каждом увеличении или уменьшении размера пользователя? – Nejc
Я думаю, что в методе делегата масштабирования вы можете применить преобразование равным, но с отрицательным знаком, чем тот, который применяется к вашему представлению контента. – Andrea
На самом деле мне пришлось разделить исходный размер с помощью шкалы масштабирования, чтобы поддерживать абсолютный размер равным. Еще раз спасибо за то, что указали мне в правильном направлении. Для справок в будущем этот код делает это: 'func scrollViewDidZoom (scrollView: UIScrollView) { var frame: CGRect! = InnerView.frame Пусть центр = innerView.center frame.size = CGSize (ширина: basicMarkerSize/scrollView.zoomScale, высота: basicMarkerSize/scrollView.zoomScale) innerView.frame = кадр innerView.center = центр } ' – Nejc