是否有一种方法可以在与页面控制结合的滚动视图中自动布局图像?

问题描述 投票:1回答:1

这是我的第一篇文章。我是来自德国的应用程序设计新手,但我仍然希望您能理解我的问题。我使用了Xcode 11和Swift 5。

我正在使用页面控件和滚动视图在一个屏幕中的图像之间切换。在iPhone 11上看起来不错,但在iPhone 8上,图像的宽度和高度太大,这就是为什么当页面控件位于第二段时仍可以看到第一幅图像的一部分的原因。对于第二张图片和第三张图片,也会发生同样的情况。This hopefully shows the problem.有没有一种方法可以使图像适合屏幕大小?

这是我的代码:

```
import UIKit

class ViewController: UIViewController, UIScrollViewDelegate {

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

    var Pages: [String] = ["Page1","Page2","Page3"]
    var frame = CGRect.zero


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        pageControl.numberOfPages = Pages.count //
        setupScreens()
        scrollView.showsHorizontalScrollIndicator = false
        scrollView.showsVerticalScrollIndicator = false
        scrollView.isPagingEnabled = true
        scrollView.delegate = self
    }

    func setupScreens() {
        for index in 0..<Pages.count {
            // 1.
            frame.origin.x = scrollView.frame.size.width * CGFloat(index)
            frame.size = scrollView.frame.size

            // 2.
            let imageView = UIImageView(frame: frame)
            imageView.image = UIImage(named: Pages[index])
            self.scrollView.addSubview(imageView)        }

        // 3.
        scrollView.contentSize = CGSize(width: (scrollView.frame.size.width * CGFloat(Pages.count)), height: scrollView.frame.size.height)
        scrollView.delegate = self


    }

    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
        let pageNumber = scrollView.contentOffset.x / scrollView.frame.size.width
        pageControl.currentPage = Int(pageNumber)
    }

}

```
swift xcode uiscrollview autolayout uipagecontrol
1个回答
0
投票

您的代码完全正常,除了在setupScreens()中调用viewDidLoad()方法。

viewDidLayoutSubviews中调用该方法,以使其获得scrollView的正确帧。

override func viewDidLayoutSubviews() {
          setupScreens()
}

here下载演示

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.