【问题标题】:No fullscreen with UIImage within UIScrollView with iPhone X and up在 iPhone X 及更高版本的 UIScrollView 中没有 UIImage 的全屏
【发布时间】:2019-06-05 17:56:58
【问题描述】:

在 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 上以纵向和横向模式全屏工作。

【问题讨论】:

    标签: swift xcode uiscrollview uiimageview uiimage


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答。我是 Swift 新手,我必须查看您的代码。但基本上你的意思是我必须以编程方式制作我的 UIScrollView 和 UIImage?
    • @Ola 不,如果你想使用 Stoyboard 来做到这一点,只需将约束设置为 safeArea,并将高度和宽度设置为与屏幕相同的大小
    • 对于初学者来说,以编程方式使用视图很难,但这样做更好,更容易,只要研究一下,你就会得到它:D
    • 您必须一直设置 ScrollView 并在 scrollView 上设置按钮、uitext
    • 好的,我将约束设置为 safeArea 但 safeArea 比屏幕小。将高度和宽度设置为与屏幕相同的大小是什么意思。我希望这适用于旧款 iPhone 和 Iphone X。我所追求的是与 iPhone 上的图片应用程序相同的功能。查看图像并全屏放大。
    猜你喜欢
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 2010-11-20
    • 1970-01-01
    • 2019-11-20
    • 2023-01-19
    相关资源
    最近更新 更多