【问题标题】:UIScrollView with horizontal paging using UIView as Subviews使用 UIView 作为子视图的具有水平分页的 UIScrollView
【发布时间】:2017-12-18 15:22:31
【问题描述】:

我已经看到了以下问题的答案。我是快速编程的新手,我正在尝试实现类似的功能。我只是想知道您是否对如何在 swift 3 Xcode 8 中实现这一目标有任何指导。我一直在寻找合适的解决方案,但没有运气。

我正在尝试使用 UIViews 作为 UIscrollviews 的子视图。我还想让每个视图在按下时填满屏幕并显示另一个 UIView。我在 'Tyler the Creator' 的 GOLF 应用上看到了类似的功能

我正在尝试实现的功能如下图所示。

如果您能提供任何帮助,我们将不胜感激。

这是我正在尝试创建的功能的表示。

【问题讨论】:

  • 如果你使用UIPageViewController 比滚动视图容易得多。几乎所有事情都为您完成。轻松找到大量教程和示例 - 只需搜索 uipageviewcontroller tutorial swift 3
  • @user8263946 您好,您找到解决方案了吗?

标签: ios uiview swift3 uiscrollview subviews


【解决方案1】:
    let scrollView : UIScrollView = UIScrollView(frame: CGRect(x: 80, y: 80, 
    width: 250, height: 300))
    scrollView.isPagingEnabled = true
    scrollView.backgroundColor = .orange
    view.addSubview(scrollView)
    let numberOfPages :Int = 5
    let padding : CGFloat = 15
    let viewWidth = scrollView.frame.size.width - 2 * padding
    let viewHeight = scrollView.frame.size.height - 2 * padding

    var x : CGFloat = 0

    for i in 0...numberOfPages{
        let view: UIView = UIView(frame: CGRect(x: x + padding, y: padding, width: viewWidth, height: viewHeight))
        view.backgroundColor = UIColor.white
        scrollView .addSubview(view)

        x = view.frame.origin.x + viewWidth + padding
    }

    scrollView.contentSize = CGSize(width:x+padding, height:scrollView.frame.size.height)

【讨论】:

  • 我尝试了解决方案,它滚动正常,但它没有显示下一张卡片的一部分。
  • 很好,但我建议使用约束。至少它可以在自动旋转时正常工作
【解决方案2】:
import UIKit

class ViewController: UIViewController {

@IBOutlet weak var scrollView: UIScrollView!

var colors:[UIColor] = [.red, .blue, .green, .yellow]
var frame: CGRect = CGRect(x: 0, y: 0, width: 0, height: 0)
override func viewDidLoad() {
    super.viewDidLoad()

    scrollView.isPagingEnabled = true
    scrollView.backgroundColor = .orange
    view.addSubview(scrollView)
    let numberOfPages :Int = 3
    let padding : CGFloat = 15
    let viewWidth = scrollView.frame.size.width - 2 * padding
    let viewHeight = scrollView.frame.size.height - 2 * padding

    var x : CGFloat = 0

    for i in 0...numberOfPages{
        let view: UIView = UIView(frame: CGRect(x: x + padding, y: padding, width: viewWidth, height: viewHeight))
        view.backgroundColor = colors[i]
        scrollView .addSubview(view)
        x = view.frame.origin.x + viewWidth + padding
    }

    scrollView.contentSize = CGSize(width:x+padding, height:scrollView.frame.size.height)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

【讨论】:

  • 有效,试试吧
猜你喜欢
  • 2023-03-19
  • 1970-01-01
  • 2015-10-27
  • 2012-10-21
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
  • 2012-06-06
  • 2017-12-26
相关资源
最近更新 更多