2014-06-17 102 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