2015-09-25 41 views
0

圖像我有以下滾動視圖代碼斯威夫特 - 如何申請調整內滾動視圖

class ViewController: UIViewController, UIScrollViewDelegate { 

@IBOutlet weak var scrollView: UIScrollView! 
@IBOutlet weak var pageControl: UIPageControl! 

var imageArray = [UIImage(named: "mainScrollView1"), UIImage(named: "mainScrollView2"), UIImage(named: "mainScrollView3"),] 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    configurePageControl() 

    scrollView.pagingEnabled = true 
    scrollView.showsHorizontalScrollIndicator = false 
    scrollView.delegate = self 

    for var i = 0; i < imageArray.count; i++ { 

     if i == 0 { 

      var imageView = UIImageView(frame: CGRectMake(0, 0, scrollView.frame.size.width, 160)) 
      imageView.image = imageArray[i] 
      scrollView.addSubview(imageView) 

     } else { 

      var float: CGFloat = CGFloat(i) 
      var imageView = UIImageView(frame: CGRectMake(scrollView.frame.size.width * float, 0, scrollView.frame.size.width, 160)) 
      imageView.image = imageArray[i] 
      scrollView.addSubview(imageView) 

     } 
    } 

    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width*3, scrollView.frame.size.height) 

} 

func configurePageControl() { 

    self.pageControl.numberOfPages = 3 
    self.pageControl.currentPage = 0 
    self.pageControl.tintColor = UIColor.redColor() 
    self.pageControl.pageIndicatorTintColor = UIColor.blackColor() 
    self.pageControl.currentPageIndicatorTintColor = UIColor.whiteColor() 
    self.view.addSubview(pageControl) 

} 

func scrollViewDidEndDecelerating(scrollView: UIScrollView) { 

    let pageNumber = round(scrollView.contentOffset.x/scrollView.frame.size.width) 
    pageControl.currentPage = Int(pageNumber) 
} 

}

的問題是圖像內滾動靜態的,它們不改變它們的大小不同的屏幕正因爲如此,它看起來像這樣

enter image description here

正如你看到的第一個圖像大小不擴展以填充整個屏幕寬度和BEC可以看到這部分第二圖像的使用

這怎麼解決?

+0

設置contentSize在'viewDidLayoutSubviews' –

+0

我嘗試在''viewDidLayoutSubviews' = scrollView.contentSize CGSizeMake(scrollView.frame.size.width * 3,滾動視圖再次調用此.frame.size.height)'但它沒有幫助,圖像保持不變。看來它必須以不同的方式完成? –

+0

不只是滾動視圖,但你需要在'viewDidLayoutSubviews'中設置一個圖像/頁面的寬度。 –

回答

1

您應該在視圖佈局所有子視圖之後更新圖像大小。你應該在viewDidLayoutSubviews中這樣做。

事情是這樣的:

var imageArray = [UIImage(named: "mainScrollView1"), UIImage(named: "mainScrollView2"), UIImage(named: "mainScrollView3"),] 
var imageViews:[UIImageView] = [] 

override func viewDidLoad() { 
    super.viewDidLoad() 
    configurePageControl() 

    scrollView.pagingEnabled = true 
    scrollView.showsHorizontalScrollIndicator = false 
    scrollView.delegate = self 

    for image in imageArray { 
     var imageView = UIImageView(image: image) 
     scrollView.addSubview(imageView) 
     imageViews.append(imageView) 
    } 
} 

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 

    for (index,imageView) in imageViews.enumerate() { 
     imageView.frame = CGRectMake(CGFloat(index)*scrollView.frame.size.width, 0, scrollView.frame.size.width, 160) 
    } 
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width*3, scrollView.frame.size.height) 
} 
+0

感謝您的回覆!不幸的是代碼不起作用,枚舉存在問題。無論如何,我嘗試瞭解代碼,我不明白爲什麼有第二個imageViews數組?提前致謝! –

+0

我修復了代碼。 –

+0

您有一個包含圖像的陣列,另一個包含imageViews。您需要繼續參考創建的imageViews,以便在視圖佈局子視圖之後調整它們的大小。 –