【问题标题】:Multiple scrollviews inside each other彼此内部的多个滚动视图
【发布时间】:2017-11-15 15:19:42
【问题描述】:

我在水平滚动视图中有一个垂直分页滚动视图。 水平滚动视图有效,但垂直滚动视图无效。

我在垂直滚动视图上使用了scrollView.contentSize=CGSize(500,2000),但它仍然无法正常工作。

现在有什么问题?

我应该说,垂直添加到视图中,以编程方式使用 xib。

这是我的 Main.swift(我没有情节提要):

class test: UIViewController {

@IBOutlet weak var scroll: UIScrollView!
override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}

override func viewDidLayoutSubviews() {

    let myView3:TourDetailsDescription = TourDetailsDescription(frame: CGRect(x: 0, y: 0, width: scroll.frame.width, height: scroll.frame.height))
    myView3.getView().frame.origin.x = CGFloat(2*scroll.frame.width)
    scroll.addSubview(myView3)

    let img1:UIImageView = UIImageView(image: UIImage(named: "kavir"))
    img1.frame = CGRect(x: 0, y: 0, width: 300, height: 600)
    myView3.mainScroll.addSubview(img1)
    myView3.mainScroll.contentSize = CGSize(width: 300, height: 600)


    self.scroll.contentSize = CGSize(width:UIScreen.main.bounds.width * CGFloat(2), height:self.scroll.frame.height)
}
}

还有我的 TourDetailsDescription.swift

类 TourDetailsDescription: UIView {

@IBOutlet weak var mainScroll: UIScrollView!
var parent:UIView!
@IBOutlet var contentView: UIView!

override init(frame: CGRect) {
    super.init(frame: frame)
    commitInit()
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    commitInit()
}
private func commitInit(){
    Bundle.main.loadNibNamed("TourDetailsDescription", owner: self, options: nil)
    addSubview(contentView)
    contentView.frame = self.bounds
    contentView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
}

func getView()->UIView{
    return contentView
}
}

【问题讨论】:

  • @pascal_AC tnx,但根本没有。
  • 在水平滚动视图之外加载垂直滚动是否有效?
  • @MXV 当然可以。即使它的内部没有从 xib 添加,它的加载。问题是从xib添加滚动视图。你能帮忙吗?
  • 需要更多关于您的结构的信息。 一切都在一个.xib中吗?或者您在 .xib 中有一个“垂直滚动视图”,并且您正在将其加载到已经存在的水平滚动视图中?

标签: ios swift scrollview


【解决方案1】:

这可能对你有帮助:),这是在操场上工作

class ScrollingViewController : UIViewController {

override func loadView() {

    let contentView = UIView(frame: CGRect(x: 0, y: 20, width: 2000, height: 200))
    contentView.backgroundColor = .green

    let scrollView = UIScrollView()
    scrollView.contentSize = contentView.frame.size
    scrollView.addSubview(contentView)
    scrollView.flashScrollIndicators()
    scrollView.backgroundColor = .white

    let verticalContainerView = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
    verticalContainerView.backgroundColor = .blue

    let verticalContentView = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 2000))
    verticalContentView.backgroundColor = .red

    let verticalScrollView = UIScrollView(frame: verticalContainerView.frame)
    verticalScrollView.contentSize = verticalContentView.frame.size
    verticalScrollView.addSubview(verticalContentView)
    scrollView.flashScrollIndicators()
    verticalScrollView.backgroundColor = .white

    verticalContainerView.addSubview(verticalScrollView)

    contentView.addSubview(verticalContainerView)

    self.view = scrollView
}

}

PlaygroundPage.current.liveView = ScrollingViewController()

【讨论】:

  • 我想从 xib 添加它。我认为问题出在约束和自动调整大小
  • 看一下设置,以及滚动视图内的内容视图,这些视图是在可滚动视图内设置大小的视图
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-16
相关资源
最近更新 更多