如何仅在右侧显示自定义视图?

时间:2015-07-06 18:47:45

标签: ios swift uistoryboard

我想将视图显示为屏幕右侧的列。这个应用程序将只是iPad。 Here ya go

3 个答案:

答案 0 :(得分:1)

这样做的一种方法是以这种方式创建一个视图控制器;将新视图控制器从资产库拖出到故事板中,将背景颜色设置为黑色并将不透明度设置为50%。然后拖出一个UIView并设置其约束,使其固定在右侧。你需要以模态方式呈现它。这通常通过控制 - 从原始视图控制器中的某个按钮或其他控件拖动到新视图控制器并选择"以模态方式呈现"。

要重新创建效果,就像您发布的图片一样,您不希望呈现视图控制器在后台消失。要确保呈现视图控制器保持不变,您可以使用自定义显示控制器。为此,请将其添加到新的视图控制器(显示右侧视图的控制器):

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    modalPresentationStyle = UIModalPresentationStyle.Custom
    transitioningDelegate = self
}

现在创建一个PresentationController,它只是UIPresentationController的子类。您需要在此PresentationController中实现的唯一方法是shouldRemovePresentersView()

override func shouldRemovePresentersView() -> Bool {
    return false
}

向呈现的(或第二个)视图控制器(包含modalPresentationStyle = UIModalPresentationStyle.CustomtransitioningDelegate = self的视图控制器)添加扩展,或者以其他方式符合UIViewControllerTransitioningDelegate协议:

extension YourViewController: UIViewControllerTransitioningDelegate {

    // Need this presentation controller so that view controller in background
    // isn't deallocated and therefore appears through the background.
    func presentationControllerForPresentedViewController(presented: UIViewController, presentingViewController presenting: UIViewController!, sourceViewController source: UIViewController) -> UIPresentationController? {
        return YourPresentationControllersName(presentedViewController: presented, presentingViewController: presenting)
    }

}

答案 1 :(得分:0)

您还可以使用完全可自定义的CocoaControl:

REFrostedViewController

以编程方式创建控制器:

^[a-z]+[0-9]+[a-z]+$

或者只是对故事板控制器进行子类化。

希望它有所帮助。

答案 2 :(得分:0)

您应该使用容器视图。将容器视图的宽度设置为与主视图的宽度成比例。

enter image description here

现在您可以根据需要设计视图控制器(上图中的蓝色),并根据需要显示。

Like this you can add anything you want to be displayed

然后在iPad模拟器中运行它。您将在屏幕右侧看到。

enter image description here

希望这会对你有所帮助。