2015-12-15 3 views
0

Я пытаюсь создать интерфейс, который показывает план этажа с маркерами в фиксированных положениях, поэтому, когда пользователь масштабирует или прокручивает план этажа, маркеры остаются в том же положении относительно изображения плана этажа.Заблокировать позицию 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?

ответ

1

Попробуйте что

  • создать вид контейнера предпочтительного размера
  • добавить вид изображения как подвид этой точки зрения контейнера
  • добавить вас фиктивный подвид в представлении контейнера
  • из zoom делегат метод зрения школы вид контейнера

Факт i что им нужен общий вид предков

+0

Спасибо, это было так очевидно. Вы случайно не знаете, есть ли способ сделать эти «фиктивные» представления одинаковыми по размеру независимо от уровня масштабирования, кроме расчета их размера и положения при каждом увеличении или уменьшении размера пользователя? – Nejc

+0

Я думаю, что в методе делегата масштабирования вы можете применить преобразование равным, но с отрицательным знаком, чем тот, который применяется к вашему представлению контента. – Andrea

+1

На самом деле мне пришлось разделить исходный размер с помощью шкалы масштабирования, чтобы поддерживать абсолютный размер равным. Еще раз спасибо за то, что указали мне в правильном направлении. Для справок в будущем этот код делает это: '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

Смежные вопросы