2015-04-25 6 views
2

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

Однако я не видел, чтобы изображения были правильно изменены до пределов моего UIScrollView. Изображения всегда больше границ, таким образом, возиться с моим пейджингом.

У меня есть UIScollView и UIPageControl в Interface Builder и связать его в моем файле ViewController swift.

Вот мой viewDidLoad метод (pageImages определяется как var pageImages: [UIImage] = [] и pageViews в var pageViews: [UIImageView?] = []:

override func viewDidLoad() { 
    scrollView.delegate = self 
    scrollView.pagingEnabled = true 
    scrollView.scrollEnabled = true 
    scrollView.showsHorizontalScrollIndicator = false 
    scrollView.showsVerticalScrollIndicator = false 
    scrollView.bounces = true 
    scrollView.scrollsToTop = false 

    pageImages = [UIImage(named: "image1")!, 
     UIImage(named: "image2")!, 
     UIImage(named: "image3")!, 
     UIImage(named: "image4")!, 
     UIImage(named: "image5")!] 

    let pageCount = pageImages.count 

    pageControl.currentPage = 0 
    pageControl.numberOfPages = pageCount 

    for (var i=0; i<pageCount; i++) { 
     var xOrigin: CGFloat = CGFloat(i) * scrollView.bounds.size.width 

     let imageView: UIImageView = UIImageView(frame: CGRectMake(xOrigin, 0, scrollView.bounds.size.width, scrollView.bounds.size.height)) 
     imageView.image = pageImages[i] 
     imageView.contentMode = UIViewContentMode.ScaleAspectFill 
     imageView.clipsToBounds = true 
     scrollView.addSubview(imageView) 
    } 


    let pagesScrollViewSize = scrollView.frame.size 
    scrollView.contentSize = CGSize(width: pagesScrollViewSize.width * CGFloat(pageImages.count), 
     height: pagesScrollViewSize.height) 
} 

Мой scrollViewDidScroll метод заключается в следующем:

func scrollViewDidScroll(scrollView: UIScrollView) { 
    let pageWidth = self.scrollView.frame.size.width 
    let page = Int(floor((self.scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1) 
    self.pageControl.currentPage = page 
} 

Может кто-нибудь обнаружить свою ошибку ли я установить contentMode, возможно, в viewWillAppear или viewDidAppear?

ответ

3

Попробуйте установить свои размеры imageViews под:

  • (ничтожной) viewDidLayoutSubviews

На данный момент, autolayout закончил изменения размера просмотров/подвидов в соответствии с системой компоновки вы определили на интерфейсе строителя, так что если ваши расчеты правильны (в соответствии с вашими требованиями) это должно получиться в порядке.

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