我认为这是UISplitViewController的基本功能,它允许通过拖动分隔线来调整主视图/详细视图的大小。阅读文档后,我发现无法在iOS应用程序上使用。但是,我确实在iOS上找到了具有SplitView且具有可拖动分隔符的应用程序,用于调整主视图/详细视图的大小。
有人做过吗?如果是,请您帮我一些指点。预先感谢。
答案 0 :(得分:0)
我不确定这是否会回答您的查询,而只是在您的UISwipeGestureRecognizer
视图中添加一个简单的MasterViewController's
即可得到一小段代码。
如果您使用的是iOS 8.0或更高版本,则可以将minimumPrimaryColumnWidth
和maximumPrimaryColumnWidth
与preferredPrimaryColumnWidthFraction
一起使用。
我已将左右滑动手势识别器添加到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
}
}
}