首页 > 解决方案 > 在 iPhone X 及更高版本的 UIScrollView 中没有 UIImage 的全屏

问题描述

使用 iPhone X 及更高版本的 UIScrollView 中没有 UIImage 的全屏显示。与 iPhone 8 和 + 完美搭配。

来自 Xcode 的屏幕截图。 'UIImage 是红色。 UIScrollView 是绿色的。

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 上都可以在纵向和横向模式下全屏使用。

标签: swiftxcodeuiscrollviewuiimageviewuiimage

解决方案


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),
            ])

推荐阅读