嗨我檢查了許多關於在這裏刷卡的問題,但有疑問。swift:在第一個視圖控制器中向上滑動顯示另一個視圖控制器
在我的應用我有兩頁 1.用戶視圖控制器 2.問題視圖控制器
現在我想實現是顯示問題視圖控制器同時從底部向上滑動用戶屏幕。
我是Ios的新手,所以幫助我實現這一點。
編輯:
問題而向上滑動只應該開始顯示其他視圖控制器。如果我刷卡,直到我的手指仍然觸摸屏幕,屏幕的中間,那麼它應該顯示2視圖controllers.can我實現這樣的
嗨我檢查了許多關於在這裏刷卡的問題,但有疑問。swift:在第一個視圖控制器中向上滑動顯示另一個視圖控制器
在我的應用我有兩頁 1.用戶視圖控制器 2.問題視圖控制器
現在我想實現是顯示問題視圖控制器同時從底部向上滑動用戶屏幕。
我是Ios的新手,所以幫助我實現這一點。
編輯:
問題而向上滑動只應該開始顯示其他視圖控制器。如果我刷卡,直到我的手指仍然觸摸屏幕,屏幕的中間,那麼它應該顯示2視圖controllers.can我實現這樣的
首先使用這種推/彈出你就必須添加一個UIPanGestureRecognizer
到您的「問題欄」,以便您可以平移它以顯示問題視圖。
要處理多個視圖控制器,你可以使用一個容器視圖控制器:
var pendingViewController: UIViewController? {
didSet {
if let pending = pendingViewController {
addChildViewController(pending)
pending.didMoveToParentViewController(self)
pending.view.frame.origin.y = UIScreen.mainScreen().bounds.height
view.addSubview(pending.view)
}
}
}
var currentViewController: UIViewController? { didSet { pendingViewController = nil } }
func showQuestions(recognizer: UIPanGestureRecognizer) {
if recognizer.state == .Began {
let controller = QuestionViewController() // create instance of your question view controller
pendingViewController = controller
}
if recognizer.state == .Changed {
let translation = recognizer.translationInView(view)
// Insert code here to move whatever you want to move together with the question view controller view
pendingViewController.view.center.y += translation.y
recognizer.setTranslation(CGPointZero, inView: view)
}
if recognizer.state == .Ended {
// Animate the view to it's location
}
}
這樣的事情。這些都是手動輸入的,所以可能會出現一些錯誤。
您可以使用自動佈局和滑動手勢來實現此目的。棘手的部分是爲您的視圖設置約束。將高度常數約束的負值添加到視圖中,以使其不會顯示在視圖中。
@IBOutlet weak var yourViewBottomConstraint: NSLayoutConstraint! //Create IBOutlet of bottom Contraint to YourView
let swipeUp = UISwipeGestureRecognizer() // Swipe Up gesture recognizer
let swipeDown = UISwipeGestureRecognizer() // Swipe Down gesture recognizer OR You can use single Swipe Gesture
不是在您的viewDidLoad()
Override func viewDidLoad() {
// Swipe Gesture
swipeUp.direction = UISwipeGestureRecognizerDirection.up
swipeUp.addTarget(self, action: "swipedViewUp")
drawerButton.addGestureRecognizer(swipeUp) // Or assign to view
swipeDown.direction = UISwipeGestureRecognizerDirection.down
swipeDown.addTarget(self, action: "swipedViewDown")
drawerButton.addGestureRecognizer(swipeDown) // Or assign to view
}
和方法刷卡視圖
// Toggle Swipe Action for imagesContainer
func swipedViewUp(){
self.yourViewBottomConstraint.constant = +90 // Or set whatever value
print("Swiped Up")
}
func swipedViewDown(){
self.yourViewBottomConstraint.constant = -90 // Or Set whatever value
print("Swiped Down")
}
嗨,按你的問題,嘗試添加輕掃手勢識別器對方向你查看和滑動嘗試推/彈出新的屏幕。 –
@Gagan_iOS您好,感謝您的回覆,問題是在向上滑動時,它應該開始顯示其他視圖控制器。如果我用手指仍然觸摸屏幕,直到屏幕中間滑動,那麼它應該顯示2個視圖控制器。我可以使用push/pop來實現此效果。 –
聽起來更像是需要'UIPanGestureRecognizer'。 – Eendje