UISplitViewController-通过拖动分隔线来调整视图大小

时间:2018-09-29 13:57:37

标签: ios swift uisplitviewcontroller

我认为这是UISplitViewController的基本功能,它允许通过拖动分隔线来调整主视图/详细视图的大小。阅读文档后,我发现无法在iOS应用程序上使用。但是,我确实在iOS上找到了具有SplitView且具有可拖动分隔符的应用程序,用于调整主视图/详细视图的大小。

有人做过吗?如果是,请您帮我一些指点。预先感谢。

1 个答案:

答案 0 :(得分:0)

我不确定这是否会回答您的查询,而只是在您的UISwipeGestureRecognizer视图中添加一个简单的MasterViewController's即可得到一小段代码。

如果您使用的是iOS 8.0或更高版本,则可以将minimumPrimaryColumnWidthmaximumPrimaryColumnWidthpreferredPrimaryColumnWidthFraction一起使用。

我已将左右滑动手势识别器添加到MasterViewController的视图中。

@IBAction func swipeGesture(_ sender: UISwipeGestureRecognizer) {


    if sender.direction == .left {
        UIView.animate(withDuration: 0.4) {
            self.splitViewController?.minimumPrimaryColumnWidth  = 200.0
            self.splitViewController?.preferredPrimaryColumnWidthFraction = 0.0
            self.splitViewController?.maximumPrimaryColumnWidth = 320.0
        }
    } else if sender.direction == .right {
        UIView.animate(withDuration: 0.4) {
            self.splitViewController?.minimumPrimaryColumnWidth  = 200.0
            self.splitViewController?.preferredPrimaryColumnWidthFraction = 1.0
            self.splitViewController?.maximumPrimaryColumnWidth = 320.0
        }
    }

}

您也可以尝试使用Pan Gesture,如下所示,以更好地控制触摸动作。

 let maximumPossibleWidth:CGFloat = 320.0
var beganPoint:CGFloat = 320.0
@IBAction func panGesture(_ sender: UIPanGestureRecognizer){




    if sender.state == .began {
        //Began
        beganPoint = sender.location(in: sender.view).x
        return
    }

    if sender.state == .changed {

        let currentPoint = sender.location(in: sender.view).x
        let fraction = currentPoint / maximumPossibleWidth

        if beganPoint > currentPoint {
            //left
                self.splitViewController?.minimumPrimaryColumnWidth  = 100.0
                self.splitViewController?.preferredPrimaryColumnWidthFraction = fraction
                self.splitViewController?.maximumPrimaryColumnWidth = 320.0
        }else {
            //right
                self.splitViewController?.minimumPrimaryColumnWidth  = 100.0
                self.splitViewController?.preferredPrimaryColumnWidthFraction = fraction
                self.splitViewController?.maximumPrimaryColumnWidth = 320.0
        }

    }
}