Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 有没有一种方法可以结合页面控制在滚动视图中自动布局图像?_Swift_Xcode_Uiscrollview_Autolayout_Uipagecontrol - Fatal编程技术网

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

Swift 有没有一种方法可以结合页面控制在滚动视图中自动布局图像?,swift,xcode,uiscrollview,autolayout,uipagecontrol,Swift,Xcode,Uiscrollview,Autolayout,Uipagecontrol,这是我第一次参赛。我是新的应用程序设计和来自德国,但我仍然希望你能理解我的问题。我使用了Xcode 11和Swift 5 我使用页面控件和滚动视图在一个屏幕中切换图像。在iPhone11上看起来不错,但在iPhone8上,图像的宽度和高度太大,这就是为什么当页面控件位于第二段时,仍然可以看到第一幅图像的一部分。对于第二个图像和第三个片段,同样的情况也会发生。 有没有办法使图像适合屏幕大小 这是我的代码: ``` import UIKit class ViewController: UIView

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

我使用页面控件和滚动视图在一个屏幕中切换图像。在iPhone11上看起来不错,但在iPhone8上,图像的宽度和高度太大,这就是为什么当页面控件位于第二段时,仍然可以看到第一幅图像的一部分。对于第二个图像和第三个片段,同样的情况也会发生。 有没有办法使图像适合屏幕大小

这是我的代码:

```
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)
    }

}

```
```
导入UIKit
类ViewController:UIViewController、UIScrollViewDelegate{
@iBCROLLVIEW:UIScrollView!
@IBVAR弱页面控制:UIPageControl!
变量页:[字符串]=[“第1页”、“第2页”、“第3页”]
var frame=CGRect.zero
重写func viewDidLoad(){
super.viewDidLoad()
//加载视图后执行任何其他设置。
pageControl.numberOfPages=Pages.count//
设置屏幕()
scrollView.showsHorizontalScrollIndicator=false
scrollView.showsVerticalScrollIndicator=false
scrollView.isPaginEnabled=true
scrollView.delegate=self
}
函数设置屏幕(){

对于0..中的索引,除了调用
viewDidLoad()
中的
setupScreens()
方法外,您的代码工作正常

viewdilayoutsubviews
中调用该方法,这样它将获得
scrollView
的正确帧

override func viewDidLayoutSubviews() {
          setupScreens()
}
从下载演示


除了调用
viewDidLoad()
中的
setupScreens()
方法外,您的代码工作正常

viewdilayoutsubviews
中调用该方法,这样它将获得
scrollView
的正确帧

override func viewDidLayoutSubviews() {
          setupScreens()
}
从下载演示


非常感谢。我在那个问题上坐了大概两个小时。非常感谢。我在那个问题上坐了大概两个小时。