2017-01-12 1 views
0

У меня есть UIViewController. Этот viewController содержит UIScrollView с презентациями UIImageView. Размер моего UIImage меньше ширины родительского представления, поэтому я хочу масштабировать ширину этого UIImageView, чтобы сделать его таким же, как родительский. Прежде чем я добавил UIScrollView, я использовал .scaleAspectFit для UIImageView, и он работал отлично. Но теперь, когда я использую UIScrollView, он показывает изображение с реальным размером.UIImageView: AscpectToFit не работает с UIScrollView, чтобы масштабировать его до полной ширины.

 guard let image = image, scrollView.frame.size.width > 0, scrollView.frame.size.height > 0 else { 
      return 
     } 
     let widthScale = scrollView.frame.size.width/image.size.width 
     let heightScale = scrollView.frame.size.height/image.size.height 
     scrollView.minimumZoomScale = min(min(widthScale, heightScale),1) 
     scrollView.zoomScale = scrollView.minimumZoomScale 
     imageView.setImage(image) 
     imageView.contentMode = .scaleAspectFit 
     scrollView.addSubview(imageView)  
     imageView.translatesAutoresizingMaskIntoConstraints = false 
     scrollView.delegate = self 
     scrollView.addSubview(imageView) 
     scrollView.maximumZoomScale = 10.0 
+0

Почему бы просто не использовать AutoLayout для компоновки UIImageView на краях UIScrollView? – mattsson

+0

cliptobounds = true может быть ответом – Fay007

+0

@ Fay007, не работает для меня – birdy

ответ

0

Я изменил zoomScale из UIScrollView:

scrollView.minimumZoomScale = min(min(widthScale, heightScale),1) 
    scrollView.zoomScale = min(widthScale, heightScale) 

Вместо:

scrollView.minimumZoomScale = min(min(widthScale, heightScale),1) 
    scrollView.zoomScale = scrollView.minimumZoomScale 

Он работает.

+1

Это может сработать, но это очень, очень неправильный способ добиться этого. – mattsson

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