2015-06-04 3 views
0

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

Любой способ избавиться от них, чтобы изображение заполнило экран?

EDIT: вот изображение, чтобы показать, что я имею в виду, белые полосы по бокам серого фона - это края прокрутки, я хочу, чтобы серый фон полностью заполнял экран отдельно от панели iAd. http://i.stack.imgur.com/qX0Kk.png

Большое спасибо!

// 1 
 
     let image = UIImage(named: "Photo1")! 
 
     imageView = UIImageView(image: image) 
 
     imageView.frame = CGRect(origin: CGPointMake(0, 0), size:image.size) 
 
     
 
     // 2 
 
     scrollView.addSubview(imageView) 
 
     scrollView.contentSize = image.size 
 
     
 
     // 3 
 
     var doubleTapRecognizer = UITapGestureRecognizer(target: self, action: "scrollViewDoubleTapped:") 
 
     doubleTapRecognizer.numberOfTapsRequired = 2 
 
     doubleTapRecognizer.numberOfTouchesRequired = 1 
 
     scrollView.addGestureRecognizer(doubleTapRecognizer) 
 
     
 
     // 4 
 
     let scrollViewFrame = scrollView.frame 
 
     let scaleWidth = scrollViewFrame.size.width/scrollView.contentSize.width 
 
     let scaleHeight = scrollViewFrame.size.height/scrollView.contentSize.height 
 
     let minScale = min(scaleWidth, scaleHeight); 
 
     scrollView.minimumZoomScale = minScale; 
 
     
 
     // 5 
 
     scrollView.maximumZoomScale = 1.0 
 
     scrollView.zoomScale = minScale; 
 
     
 
     // 6 
 
     centerScrollViewContents() } 
 
    
 
    func centerScrollViewContents() { 
 
     let boundsSize = scrollView.bounds.size 
 
     var contentsFrame = imageView.frame 
 
     
 
     if contentsFrame.size.width < boundsSize.width { 
 
      contentsFrame.origin.x = (boundsSize.width - contentsFrame.size.width)/2.0 
 
     } else { 
 
      contentsFrame.origin.x = 0.0 
 
     } 
 
     
 
     if contentsFrame.size.height < boundsSize.height { 
 
      contentsFrame.origin.y = (boundsSize.height - contentsFrame.size.height)/2.0 
 
     } else { 
 
      contentsFrame.origin.y = 0.0 
 
     } 
 
     
 
     imageView.frame = contentsFrame 
 
     
 
    } 
 
    
 
    func scrollViewDoubleTapped(recognizer: UITapGestureRecognizer) { 
 
     // 1 
 
     let pointInView = recognizer.locationInView(imageView) 
 
     
 
     // 2 
 
     var newZoomScale = scrollView.zoomScale * 1.5 
 
     newZoomScale = min(newZoomScale, scrollView.maximumZoomScale) 
 
     
 
     // 3 
 
     let scrollViewSize = scrollView.bounds.size 
 
     let w = scrollViewSize.width/newZoomScale 
 
     let h = scrollViewSize.height/newZoomScale 
 
     let x = pointInView.x - (w/2.0) 
 
     let y = pointInView.y - (h/2.0) 
 
     
 
     let rectToZoomTo = CGRectMake(x, y, w, h); 
 
     
 
     // 4 
 
     scrollView.zoomToRect(rectToZoomTo, animated: true) 
 
    } 
 
    
 
    func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? { 
 
     return imageView 
 
    } 
 
    
 
    func scrollViewDidZoom(scrollView: UIScrollView) { 
 
     centerScrollViewContents() 
 
    }

ответ

2

Вы устанавливаете мин zoomscale быть мин ширина и высота весов. Это обычно желательно, так как оно позволяет вам видеть все изображение (AspectFit). Похоже, вы хотите, чтобы AspectFill, чтобы сделать это, вам нужно будет использовать максимальную шкалу ширины и высоты.

let minScale = max(scaleWidth, scaleHeight); 
+0

Большое спасибо! :) – Kieran