У меня есть приложение Multipeer (только одно приложение), которое позволяет хосту представлять изображение и затем рисовать на нем.
Пиры получают изображение по мере его изменения.
Изображение представлено в UIScrollView в обоих типах режимов.
Хост может в настоящее время панорамировать изображение и увеличивать и уменьшать масштаб.
Однако хост хотел бы иметь возможность сделать то же самое, возможно, для просмотра части изображения большего размера, чем редактируется.
Это вообще возможно? Прямо сейчас оба режима используют один и тот же код, кроме случаев, когда настраивается режим просмотра изображений с прокруткой. Хост загружает изображение со своего собственного устройства, в то время как одноранговый узел копирует изображение из данных, отправленных через соединение Multipeer.
Любые идеи будут оценены.
Дома, чтобы я мог добавить код.
Различные функции, связанные с UIScrollView. imageView - это пользовательский UIImageView, имеющий несколько свойств, одним из которых является mapSizeRatio, которое соотносит соотношение исходного изображения с плотностью экрана для работы с поворотом и различными устройствами.
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return imageView
}
func scrollViewDidZoom(_ scrollView: UIScrollView) {
let imageViewSize = imageView.frame.size
let scrollViewSize = bounds.size
let verticalPadding = imageViewSize.height < scrollViewSize.height ? (scrollViewSize.height - imageViewSize.height) / 2 : 0
let horizontalPadding = imageViewSize.width < scrollViewSize.width ? (scrollViewSize.width - imageViewSize.width) / 2 : 0
contentInset = UIEdgeInsets(top: verticalPadding, left: horizontalPadding, bottom: verticalPadding, right: horizontalPadding)
}
/// maximum zoom should be based on the 1-inch square concept
public func setZoomScaleForScrollView() {
let imageViewSize = imageView.bounds.size
let scrollViewSize = bounds.size
let widthScale = scrollViewSize.width / imageViewSize.width
let heightScale = scrollViewSize.height / imageViewSize.height
minimumZoomScale = max(widthScale, heightScale)
maximumZoomScale = imageView.mapSizeRatio
}
и в контроллере вида
override func viewWillLayoutSubviews() {
mapScrollView.setZoomScaleForScrollView()
}