在 iPhone X 及以上的 UIScrollView 中没有 UIImage 的全屏

No fullscreen with UIImage within UIScrollView with iPhone X and up

在 iPhone X 及更高版本的 UIScrollView 中,UIImage 无法全屏显示。与 iPhone 8 和 +.

完美配合

来自 Xcode 的屏幕截图。 'UIImage is the color red. UIScrollView is the color green.

UIScrollView 和UIImage 都对SuperView 有约束。但是使用 iPhone X 时,UIImage 不会与 SuperView 对齐。如果我将 UIImage 直接移动到视图,那么它看起来没问题,但随后我的缩放选项停止工作。

这是缩放选项的代码。

func updateZoomFor(size: CGSize) {
        let widthScale = size.width / image2.bounds.width
        let heightScale = size.height / image2.bounds.height
        let scale = min(widthScale,heightScale)
        scrollView2.minimumZoomScale = scale
        scrollView2.minimumZoomScale = 1.0
        scrollView2.maximumZoomScale = 5.0
        scrollView2.contentSize = .init(width: 2000, height: 2000)
    }

    func viewForZooming(in scrollView2: UIScrollView) -> UIView? {
        return image2
    }

这是隐藏状态栏和主页按钮的代码。

 override var prefersStatusBarHidden: Bool {
        return true
    }

    override var prefersHomeIndicatorAutoHidden: Bool {
        return true
    }

我希望 UIScrollView 和 UIImage 在任何 Iphone 纵向和横向模式下全屏工作。

1.- 设置你的滚动视图:

let scrollView: UIScrollView = {
        let scrollView = UIScrollView()
        scrollView.translatesAutoresizingMaskIntoConstraints = false;
        scrollView.backgroundColor = .clear
        return scrollView
    }()

2.- 添加到子视图:

private func setSubviews() {

        self.addSubview(scrollView)

}

3.- 将所有内容添加到 ScrollView-Subview 示例:

self.addSubview(scrollView)
        self.scrollView.addSubview(screenIcon)
        self.scrollView.addSubview(screenTitle)

4.- 设置约束:

 NSLayoutConstraint.activate([
            scrollView.topAnchor.constraint(equalTo: self.topAnchor, constant: 0),
            scrollView.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 0),
            scrollView.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: 0),
            scrollView.heightAnchor.constraint(equalTo: self.heightAnchor, multiplier: 2),
            ])