Swift:显示在屏幕底部的OverlayView

时间:2016-11-07 08:27:33

标签: swift view overlay uialertcontroller uiactionsheet

我想创建一个非常常见的效果,如下图所示:

view that appears at the bottom of the screen

说明:我想要完成的效果包括当用户点击按钮时在屏幕底部显示(滑入)的视图:您仍然可以看到此视图后面的屏幕,但它应用了“暗层“(黑色视图,让我们说60%的不透明度)在它的顶部。当用户单击Block或Report absue时(如本例所示),它将执行相应的操作。现在,当用户点击取消时,以及当他点击“暗层”的任何地方时,它会将他带回屏幕。

我尝试过:呈现一个新的视图控制器(但它会使用超过必要的数据),使用覆盖层,但我甚至没有接近我们通常在应用上看到的效果。我不确定但我会说获得这种效果的最佳方法是使用视图吗?

有人有想法吗?

谢谢,祝你有个美好的一天,

Ĵ

1 个答案:

答案 0 :(得分:5)

您正在寻找名为UIActionSheet的原生元素。它已成为UIAlertController的一部分,并且完全符合您的要求。

这里有一些帮助如何设置一个:

 // Create you actionsheet - preferredStyle: .actionSheet
        let actionSheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)

        // Create your actions - take a look at different style attributes
        let reportAction = UIAlertAction(title: "Report abuse", style: .default) { (action) in
            // observe it in the buttons block, what button has been pressed
            print("didPress report abuse")
        }

        let blockAction = UIAlertAction(title: "Block", style: .destructive) { (action) in
            print("didPress block")
        }

        let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (action) in
            print("didPress cancel")
        }

        // Add the actions to your actionSheet
        actionSheet.addAction(reportAction)
        actionSheet.addAction(blockAction)
        actionSheet.addAction(cancelAction)
        // Present the controller
        self.present(actionSheet, animated: true, completion: nil)

它应该产生以下输出:

enter image description here