如何在NavigationController和UITabbar上方显示UIView?

时间:2018-10-23 04:24:20

标签: ios swift uiactionsheet

我试图创建一个自定义的动作表控制器(因为我希望它与iPad上的动作表相似)。我在项目中使用XIB加载视图。

我有一个View Controller A,我想从底部显示一个自定义的Table视图(仅是模仿actionSheet行为)。但是,当我通过将其添加到View Controller A中的自定义View来执行此操作时,该视图仍位于该View控制器的NavigationController和UITababar之下。

    let vc = CustomActionTableViewController(nibName: "CustomActionTableViewController", bundle: nil)
    self.addChildViewController(vc)
    self.actionView.addSubview(vc.view)
    vc.didMove(toParentViewController: self)
    let horzConstraints = NSLayoutConstraint.constraints(withVisualFormat: "H:|[childView]|", options: [], metrics: nil, views: ["childView": vc.view])

    let vertConstraints = NSLayoutConstraint.constraints(withVisualFormat: "V:|[childView]|", options: [], metrics: nil, views: ["childView": vc.view])

    view.addConstraints(horzConstraints)
    view.addConstraints(vertConstraints)
    vc.view.translatesAutoresizingMaskIntoConstraints = false

This is my implementation

我想将此添加到视图中,以便即使通过导航控制器和UITabbar也可以实现透明背景。

Something like this

如何实现这一目标。此外,如何创建用于AirPods连接的卡片式底视图?可以使用Apple的UIKit或任何库来模仿这种视图吗?enter image description here

2 个答案:

答案 0 :(得分:4)

您应PrincipalContext try { var ou = new PrincipalContext(ContextType.Domain, targetedDcUrl, container); var searchPrincipal = new UserPrincipal(ou); var searcher = new PrincipalSearcher(searchPrincipal); var users = searcher.FindAll(); } catch (PrincipalOperationException ex) { Console.WriteLine("Container does not exist"); } presentViewController

modalPresentationStyle

您可以将.overFullScreen的{​​{1}}的背景let vc = CustomActionTableViewController(nibName: "CustomActionTableViewController", bundle: nil) vc.modalPresentationStyle = .overFullScreen self.present(vc, animated: true, completion: nil) 设置为黑色,并更改color的值以设置透明度。

答案 1 :(得分:1)

import UIKit

class SetupSheet: UIViewController {
    var content: UIView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = UIColor(red: 0/255, green: 0/255, blue: 0/255, alpha: 0.6)
        
    }

    override func viewDidAppear(_ animated: Bool) {
        displaySetupSheet()
    }

    private func displaySetupSheet() {
        content.frame = CGRect(x: 8, y: view.frame.maxY, width: view.bounds.width - 16 , height: view.bounds.height / 2)
        content.backgroundColor = .white
        content.layer.cornerRadius = 30
        self.view.addSubview(content)
        
        UIView.animate(withDuration: 0.2, delay: 0.0, options: UIView.AnimationOptions.transitionCurlUp) {
            self.content.frame.origin.y -= (self.view.bounds.height / 2) + 16
        }
    }
}

我知道这篇文章有点旧,但我尝试了很多东西,这可能会对某人有所帮助。这是一个完成的可重复使用的“Airpod”样式设置表。它是一个视图控制器,因此您可以使用 present() 来呈现它。初始化时,为内容分配一个 UIView,其中包含要显示的任何内部内容。 Here's a pic used in my app