【问题标题】:iOS swift add uipageviewcontroller inside of uiScrollviewiOS swift在uiScrollview中添加uipageviewcontroller
【发布时间】:2020-06-13 22:02:35
【问题描述】:

我想在 UIscrollview 中添加 uipageviewController。一切都按预期添加。但是 UIScrollView 没有滚动。基本上,整个 viewController 以横向模式加载。我正在使用 UIPageViewController 加载一本书并将其添加到滚动视图中,这样用户既可以滚动查看完整页面,也可以更改使用 pageviewcontroller 处理的页面。

这就是我在滚动视图中使用页面视图控制器的原因

class QuranLandController: UIViewController {

    @IBOutlet weak var quranContainer: UIView!
    @IBOutlet weak var scrollView: UIScrollView!

    // UIPageViewController
    let controller = QuranPagerController()

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        addChildViewController(controller)
        controller.view.translatesAutoresizingMaskIntoConstraints = false

        quranContainer.layout(controller.view)
            .width().top().left().right().height(900)
//        containerView.addSubview(controller.view)
//
//        NSLayoutConstraint.activate([
//            controller.view.leadingAnchor.constraint(equalTo: containerView.leadingAnchor),
//            controller.view.trailingAnchor.constraint(equalTo: containerView.trailingAnchor),
//            controller.view.topAnchor.constraint(equalTo: containerView.topAnchor),
////            quranContainer.heightAnchor.constraint(equalToConstant: 900),
//            controller.view.heightAnchor.constraint(equalTo: containerView.heightAnchor),
//            controller.view.bottomAnchor.constraint(equalTo: containerView.bottomAnchor)
//            ])

//        let contentRect: CGRect = quranScrollContainer.subviews.reduce(into: .zero) { rect, view in
//            rect = rect.union(view.frame)
//        }
//        quranScrollContainer.contentSize = contentRect.size

        controller.didMove(toParentViewController: self)

        //        Translator().defaultTranslation()
        for recognizer in controller.gestureRecognizers {
            if recognizer is UITapGestureRecognizer {
                recognizer.isEnabled = false
            }
        }

        let value = UIInterfaceOrientation.landscapeRight.rawValue
        UIDevice.current.setValue(value, forKey: "orientation")
    }

    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return .landscapeRight
    }

    override var shouldAutorotate: Bool {
        return true
    }

    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destination.
        // Pass the selected object to the new view controller.
    }
    */

}

【问题讨论】:

    标签: ios swift uiscrollview uipageviewcontroller


    【解决方案1】:

    创建UIPageViewController 并将UIViewControllerUIScrollView 作为页面放入其中。

    每个页面都可以滚动到底部。

    【讨论】:

    • 好吧,我在 uipageview 的每个 viewcontrollres 中都有更多的点击手势。有没有办法让 uipagecontroller 滚动?
    • @AhsanAasim 这是糟糕的视图层次结构,我相信这样不会起作用。
    • 是的,我明白了。但是我的场景需要以这种方式实现。我已经解决了滚动视图滚动问题。现在 pageviewcontrollers 页面滑动出现问题。它被完全禁用了
    • @AhsanAasim 尝试使用启用了 isPaging 的集合视图。这不会禁用滑动。
    • 因为我需要页面卷曲动画,这将是另一个问题。我已经看到一些应用程序实现了我想要实现的相同目标。所以必须有一个解决方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 2017-11-21
    相关资源
    最近更新 更多