2016-03-19 10 views
0

У меня есть UIViewController с UIScrollView на нем. Я хотел бы иметь поведение в мое приложение следующим образом:Почему я не могу установить масштаб по умолчанию для моего UIScrollView в моем приложении iOS swift?

1) пользователь открывает приложение и видит фотографию в нормальном размере (размер UIScrollView по умолчанию)

2), когда пользователь один краны на фото, он переходит в полноэкранный режим, а также пользователь может приближать и перемещать фотографию вокруг

3) когда пользователь снова нажимает на фотографию в полноэкранном режиме, он сжимается до исходного размера от точки 1), а масштабирование и перемещение отключено.

Для обработки прокрутки и перемещения фотографии вокруг я решил пойти с этим плагином: https://github.com/huynguyencong/ImageScrollView.

Мой код выглядит следующим образом:

@IBOutlet weak var requestPhoto: ImageScrollView! 

var originalPhotoSize :CGRect? 
var isPhotoOnFullScreen: Bool = false 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tapHandler:") 

    self.requestPhoto.addGestureRecognizer(tapGestureRecognizer) 
    self.requestPhoto.userInteractionEnabled = true 

    originalPhotoSize = requestPhoto.frame 
} 


override func viewDidAppear(animated: Bool) { 
    super.viewWillAppear(animated) 
    requestPhoto.scrollEnabled = false 
    requestPhoto.pinchGestureRecognizer?.enabled = false 
    requestPhoto.panGestureRecognizer.enabled = false 
    requestPhoto.zoomScale = 1 
} 

func tapHandler(sender: UITapGestureRecognizer) { 

    if sender.state == .Ended { 
     if(isPhotoOnFullScreen == true){ 
      self.requestPhoto.frame = originalPhotoSize! 
      self.requestPhoto.zoomScale = 1 
      self.requestPhoto.pinchGestureRecognizer?.enabled = false 
      self.requestPhoto.scrollEnabled = false 
      isPhotoOnFullScreen = false 
     }else{ 
      self.requestPhoto.frame = self.view.frame 
      self.requestPhoto.pinchGestureRecognizer?.enabled = true 
      self.requestPhoto.scrollEnabled = true 
      isPhotoOnFullScreen = true 
     } 

} 
} 

И мои точные проблемы:

1), когда пользователь открывает приложение, он может ущипнуть, чтобы увеличить на маленькую фотографию (даже если я создал requestPhoto.pinchGestureRecognizer?.enabled = false в viewDidLoad)

2) когда пользователь отбирает фотографию, которую он открывает на полноэкранном режиме. Это хорошо, но когда он зажимает, чтобы увеличить, и в какой-то момент один раз кратким снимком, он возвращается к небольшому размеру, но уровень масштабирования не установлен на значение по умолчанию (хотя я устанавливаю self.requestPhoto.zoomScale = 1)

Можете ли вы помогите мне с этими двумя проблемами выше?

==== EDIT

говоря о проблеме нет. 1 - когда пользователь открывает приложение, он может зажимать, чтобы приближать фотографию, но когда он открывает изображение в полноэкранном режиме и возвращается в нормальный режим - тогда масштабирование отключено. Почему он не отключен с самого начала?

говоря о проблеме нет. 2 - как-то эта строка self.requestPhoto.zoomScale = 1 не работает, когда я напечатал значение self.requestPhoto.zoomScale сразу после установки его в 1, оно все еще имеет другое значение, я не уверен, является ли это этим плагином (https://github.com/huynguyencong/ImageScrollView) или я что-то не так ?

ответ

0

Для достижения своих целей вы можете использовать родной UIScrollView. Вам не нужно использовать сторонний SDK.

Если вы решили построить приложение с родной ScrollViewDelegate, вы можете использовать этот scrollViewделегат метод набор масштабирования уровней.

func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? { 
     scrollView.minimumZoomScale = 1 
     scrollView.minimumZoomScale = 10 
     return self.imageView // Your Image View. 
    } 
+0

Спасибо за это! Однако на данный момент я решил остаться с сторонним sdk и попытался исправить свои ошибки, если это не сработает, я попытаюсь использовать ваше решение! Возможно, вы знаете, что может быть причиной моих проблем? – randomuser1

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

  • Нет связанных вопросов^_^