ios - iPhone 和 iPad 上的 View 放置方式不同

标签 ios iphone swift uiscrollview uiimageview

我开发了一个应用程序,允许用户在选择覆盖的眼镜上拍照。它在 ipad 和 ipad mini 上的工作方式完全符合我的要求,但在 iPhone 上,与 ScrollView 相关的位置是错误的(参见图片)。

func setupPages(){
    pageImages = [
        UIImage(named: "glasses_one")!,
        UIImage(named: "glasses_two")!,
        UIImage(named: "glasses_three")!,
        UIImage(named: "glasses_four")!,
        UIImage(named: "glasses_five")!,
        UIImage(named: "glasses_six")!
    ]

    let pageCount = pageImages.count

    for _ in 0..<pageCount {
        pageViews.append(nil)
    }
    print(pageViews.count)

    let pagesScrollViewSize = scrollView.frame.size
    scrollView.contentSize = CGSize(width:  scrollWidth * CGFloat(pageImages.count),
        height: pagesScrollViewSize.height)

    scrollView.backgroundColor = UIColor.blueColor()

    loadVisiblePages()
}

func loadVisiblePages() {
    let pageWidth = scrollView.frame.size.width

    page = Int(floor((scrollView.contentOffset.x * 2.0 + pageWidth) / (pageWidth * 2.0)))
    print(page)
    pageControl.currentPage = page

    for index in 0...5 {
        //print(" -- Index = \(index)")
        loadPage(index)
    }
}

func loadPage(page: Int) {
    if page < 0 || page >= pageImages.count {
        // If it's outside the range of what you have to display, then do nothing
        return
    }

    // 1
    if let pageView = pageViews[page] {
        print(pageView.description)
        // Do nothing. The view is already loaded.
    } else {
        // 2
        var frame = scrollView.bounds
        frame.origin.x = scrollWidth * CGFloat(page)
        frame.origin.y = 0.0
        frame.size.width = scrollWidth
        // 3
        let newPageView = UIImageView(image: pageImages[page])
        newPageView.contentMode = .ScaleAspectFit
        newPageView.frame = frame
        newPageView.clipsToBounds = false
        scrollView.addSubview(newPageView)


        // 4
        pageViews[page] = newPageView
    }
}

iPad

enter image description here

苹果手机

enter image description here

最佳答案

我认为您的问题是您需要添加约束以使图像垂直居中。或者你也可以通过为你的“眼镜框”设置宽度和高度的框架来解决这个问题。较小的屏幕周围空间较小,但仍位于中间。

关于ios - iPhone 和 iPad 上的 View 放置方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36014826/

相关文章:

ios - UIButton子类更改标题颜色,而无需使用setTitleColor(_,用于状态:) [Swift]

ios - 如何使用 AVCapturePhoto 包含位置数据?

iphone - OpenGL ES 渲染到纹理

ios - 如何使用委托(delegate)来指示哪个 View Controller 充当初始 View Controller ?

ios - 保留 mask UIView 的阴影

iphone - 调用 stopUpdatingLocation 后紫色位置三角形不消失

objective-c - UITextFieldDelegate SecondView

ios - 在 iOS 7 中保留 iOS 6 布局进行小更新?

ios - iOS8自定义键盘可以知道它所使用的应用程序吗?

ios - 如何使用文件路径的引用获取图库文件路径并显示图像