2014-06-17 162 views
0

我一直試圖在Swift中對UIWindow邊界進行簡單的更改。到目前爲止,我有:如何在Swift中設置UIWindow屬性

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions:NSDictionary?) -> Bool { 
    // Override point for customization after application launch. 


    //SHIFT EVERYTHING DOWN - THEN UP IN INDIV VCs IF ios7> 
    var device:UIDevice=UIDevice() 
    var systemVersion:String=device.systemVersion 
    println(systemVersion) 
    //Float(systemVersion) 

    if (systemVersion >= "7.0") { 
     UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true) 
     self.window.setClipsToBounds = true // --> Member doesnt exist in UIWindow 
     self.window.frame = CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height); 
     self.window.bounds = CGRectMake(0,0, self.window.frame.size.width, self.window.frame.size.height); 
    //} 

    let ok = true 
    println("Hello World") 
    return true 
} 

,但我得到:

的UIWindow不必在每個self.window.property二傳手線命名爲成員。

回答

3

問題是self.window是可選的。你首先要"unwrap" it。你還需要使用clipsToBoundssetClipsToBounds

if let window = self.window { 
    window.clipsToBounds = true 
    window.frame = CGRect(x: 0, y: 20, width: window.frame.size.width, height: window.frame.size.height); 
    window.bounds = CGRect(x: 0, y: 0, width: window.frame.size.width, height: window.frame.size.height); 
} 

注意:我也更新CGRectMake使用的CGRect初始化而不是全局CGRectMake功能創建的CGRect的首選斯威夫特方式。

2

在AppDelegate類中,window是一個可選變量。您需要用!!強制展開變量。

例如,

self.window!.clipsToBounds = true 

如果您不熟悉如何在自選斯威夫特工作,從蘋果退房文檔他們。

+2

哇!在這裏,我認爲Swift應該讓編碼更有效率。謝謝! – marciokoko