我是Android开发人员,现在我开始在Swift
开发。我想知道如何从底部显示UIView
,如下所示:
到现在为止我知道如何做到这一点,但是使用底部视图作为UIViewController
,我有一天在Stackoverflow上看到了这个问题。 https://github.com/luangs7/BottomDialogSwift
嗯,总而言之,我只需要在底部使用自定义UIView
显示xib
,其中包含自定义height
。
答案 0 :(得分:3)
你可以通过做一些动画来实现这一点。如果您正在使用故事板,那么为您的视图提供约束,
ViewToAnimates.leading = safeArea.leading" constant = 0"
ViewToAnimates.trailing = safeArea.trailing" constant = 0"
ViewToAnimates.top = safeArea.bottom" constant = 0"(您的视图将放置在ViewControllers主视图下方)
现在显示你的观点,
@IBOutlet weak var viewToAnimateOutlet: UIView!
@IBAction func showViewButtonAction(_ sender: Any) {
UIView.animate(withDuration: 1.5) {
self.viewToAnimateOutlet.center.y -= self.viewToAnimateOutlet.frame.height
}
}
@IBAction func hideViewButtonAction(_ sender: Any) {
UIView.animate(withDuration: 1.5) {
self.viewToAnimateOutlet.center.y += self.viewToAnimateOutlet.frame.height
}
}
答案 1 :(得分:1)
您可以使用自定义动画完成您想要的图片,另一个视图顶部的模式。
您可以在屏幕上显示的名为.transitioningDelegate
的UIViewController上设置属性,并使UIViewController在屏幕上显示为委托。在UIViewControllerTransitioningDelegate
上实施的方法中,您需要返回UIViewControllerAnimatedTransitioning
的自定义实例。
您可以继承NSObject and have it adhere to the protocols of
UIViewControllerTransitioningDelegate`。在该对象中,您可以控制位于其他对象之上的视图的自定义大小,屏幕上的位置以及如何为其设置动画。如果您想在该视图和屏幕上的其他视图之间放置任何其他视图,例如灰色半透明视图。
你在方法中做到了这一切:
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
//here is where you do your magic custom animation
}
func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
//set the duration of the animation here
}
要使其工作,请将您的模态视图设置为故事板的任何其他成员,并使用UIViewController
从segue
链接到该视图,并使用UIViewController
进行动画处理。
然后使用 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let vc = segue.destination as? MyCustomModalView {
vc.transitioningDelegate = self
vc.modalPresentationStyle = .overFullScreen
}
}
方法
SELECT id, pid
FROM posts
WHERE fid IN (1,2,3)
AND author = 'Eddy'
GROUP BY IF(pid > 0, pid, id)
ORDER BY IF(latest > timestamp, latest, timestamp) DESC
LIMIT 1, 5;
引用该视图并将transitioningDelegate设置为self,(或其他一些对象)
互联网上有很多教程可以引导您完成这个过程,一旦您理解了流程就不那么难了
我会从Ray wenderlich one here
开始