定义UIViewController或UIView的自定义框架

时间:2016-02-09 14:50:33

标签: ios swift uiview uiviewcontroller sprite-kit

我在Swift 2.0& iOS> = 8我在其中拥有管理游戏本身的SKScene的初始VC。

当玩家赢或输时,我想显示如下信息:

enter image description here

我通过从界面构建器加载的另一个VC显示此消息,其中以下代码从初始VC类调用:

let VCWin = self.storyboard!.instantiateViewControllerWithIdentifier("WinVC") as! WinVC
VCWin.modalPresentationStyle = UIModalPresentationStyle.FormSheet
VCWin.modalTransitionStyle = UIModalTransitionStyle.CrossDissolve
self.presentViewController(VCWin, animated: true, completion: nil)

重要的是,WinVC允许看到作为FormSheet& amp; CrossDissolve属性可以实现。

WinVC还将托管一个视图,该视图呈现一个可以执行一些精灵动画的SKScene。

我的问题是去除黄色圆角附近的白色部分,以便看到背后的内容(就像屏幕的其他部分变暗)。

是否可以将VC的帧设置为此处使用的图像的掩码?或者将视图的框架设置为所用图像的蒙版并使VC低于透明度?

我已从WinVC中删除了所有内容,以避免由代码的其他部分引起问题

class WinVC: UIViewController
{
    override func viewDidLoad()
    {
        super.viewDidLoad()
    }

    override func viewDidAppear(animated: Bool)
    {
    }

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
    {
        for _ in touches
        {
            self.dismissViewControllerAnimated(false, completion: nil)
        }
    }

    override func viewDidDisappear(animated: Bool)
    {
    }
}

界面构建器中的设置:

VC设置

enter image description here

查看设置

enter image description here

图像设置

enter image description here

2 个答案:

答案 0 :(得分:0)

你的框架很好 - 这可能是因为你的UIViewController包含一个具有白色背景的视图对象。在WinVC班级viewDidLoad中,执行以下操作:

view.backgroundColor = UIcolor.clearColor()

答案 1 :(得分:0)

我用以下解决方案解决了我的问题:

  • 将VCWin Presentation参数设置为“Over full 屏幕“
  • 将VCWin大小设置为与VC经过的VC相同的大小
  • 将VCWin中SKView的背景颜色设置为“清除颜色”
  • 在SKView中用作背景的图像必须具有需要透明度的alpha(在我的情况下是角落)
  • 将SKView大小设置为用作背景的图像大小
  • 创建一个正确设置颜色/透明度的ShapeNode,并将其放在VCWin后面的VC中的SKScene之上,以实现暗淡效果

然后我得到了想要的结果:

enter image description here