簡體   English   中英

定義UIViewController或UIView的自定義框架

[英]Define custom frame of UIViewController or UIView

我正在使用Swift 2.0和iOS> = 8進行游戲,在該游戲中,我有初始的VC托管着SKScene來管理游戲本身。

當玩家贏或輸時,我要顯示以下消息:

在此處輸入圖片說明

我通過接口構建器加載的另一個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和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設置

在此處輸入圖片說明

查看設置

在此處輸入圖片說明

影像設定

在此處輸入圖片說明

您的框架很好-可能是因為UIViewController包含一個具有白色背景的視圖對象。 WinVC類的viewDidLoad ,執行以下操作:

view.backgroundColor = UIcolor.clearColor()

我通過以下解決方案解決了我的問題:

  • 將VCWin Presentation參數設置為“全屏顯示”
  • 將VCWin大小設置為與其所經過的VC相同的大小
  • 在VCWin中將SKView的背景色設置為“清除顏色”
  • 在SKView中用作背景的圖像必須在需要透明度的位置具有Alpha(在我的情況下為四角)
  • 將SKView大小設置為用作背景的圖像的大小
  • 創建具有正確設置顏色/透明度的ShapeNode,並將其放在VCWin之后的VC中的SKScene的頂部,以執行暗淡效果

然后我有想要的結果:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM