ios - 多个 ScrollView 彼此内部

标签 ios swift scrollview

我在水平 ScrollView 中有一个垂直分页 ScrollView 。 水平 ScrollView 有效,但垂直 ScrollView 无效。

我在垂直 ScrollView 上使用了 scrollView.contentSize=CGSize(500,2000) 但它仍然不起作用。

现在问题是什么?

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

这是我的Main.swift(我没有 Storyboard):

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
}
}

最佳答案

也许这对你有帮助:),这是在 Playground 上工作

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()

关于ios - 多个 ScrollView 彼此内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47311064/

相关文章:

ios - 设备上的应用程序大小是否等于应用程序商店中的最终大小?

ios - 如何使用 Alamofire 将多部分图像上传到服务器

android - 如果 nestedscrollview 结束,如何停用滚动父 ScrollView ?

c++ - 获取触摸在 ScrollView 中的位置

ios - Cocoapods:如何使用最新的 Swift 版本创建一个 pod?

iphone - 无法保存推送通知消息数据?

ios - 如何以编程方式在 iOS 13 中隐藏和显示状态栏?

ios - 从核心数据中获取独特值(value)

swift - 对列表进行排序会刷新整个 Body View 吗?

android - 如何禁用 ScrollView 滚动?