Rikh와 Tj3n에게 도움을 주신 데 대해 감사드립니다. 나는 아주 기본적인 것을 해냈습니다. Uber와 같은 멋진 애니메이션이 아니지만 일을 끝내게됩니다.
다음 코드를 사용하면 UIViewController를 스 와이프 할 수 있습니다. 내 이미지에 UIPanGestureRecognizer를 사용합니다.이 이미지는 항상 드래그 된 뷰 위에 유지됩니다. 기본적으로 이미지를 사용하면 드래그 한 위치를 인식하고 사용자의 입력에 따라보기 프레임을 설정합니다.
먼저 스토리 보드로 이동하여 드래그 할 UIViewController의 식별자를 추가하십시오.
는 그 다음 MainViewController에 다음 코드를 사용
class MainViewController: UIViewController {
// This image will be dragged up or down.
@IBOutlet var imageView: UIImageView!
// Gesture recognizer, will be added to image below.
var swipedOnImage = UIPanGestureRecognizer()
// This is the view controller that will be dragged with the image. In my case it's a UITableViewController.
var vc = UIViewController()
override func viewDidLoad() {
super.viewDidLoad()
// I'm using a storyboard.
let sb = UIStoryboard(name: "Main", bundle: nil)
// I have identified the view inside my storyboard.
vc = sb.instantiateViewController(withIdentifier: "TableVC")
// These values can be played around with, depending on how much you want the view to show up when it starts.
vc.view.frame = CGRect(x: 0, y: self.view.frame.height, width: self.view.frame.width, height: -300)
self.addChildViewController(vc)
self.view.addSubview(vc.view)
vc.didMove(toParentViewController: self)
swipedOnImage = UIPanGestureRecognizer(target: self, action: #selector(self.swipedOnViewAction))
imageView.addGestureRecognizer(swipedOnImage)
imageView.isUserInteractionEnabled = true
}
// This function handles resizing of the tableview.
func swipedOnViewAction() {
let yLocationTouched = swipedOnImage.location(in: self.view).y
imageView.frame.origin.y = yLocationTouched
// These values can be played around with if required.
vc.view.frame = CGRect(x: 0, y: yLocationTouched, width: UIScreen.main.bounds.width, height: (UIScreen.main.bounds.height) - (yLocationTouched))
vc.view.frame.origin.y = yLocationTouched + 50
}
최종 제품 이제
을, 그것은 가능하다 내 대답은하지 않을 수있는 가장 효율적인 방식으로 진행하지만 iOS를 처음 접했을 때 당분간은 이것이 최고라고 생각합니다.
감사합니다.이 문제를 해결하고 다시 신고하겠습니다. – Munib