2014-06-17 4 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입니다. 또한 clipsToBounds하지 setClipsToBounds를 사용해야합니다.

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 초기화를 사용 CGRect을 만드는 선호하는 신속한 방법에 CGRectMake를 업데이트했습니다.

2

AppDelegate 클래스에서 window는 선택적 변수입니다. !로 변수의 랩핑을 강제 실행해야합니다. 예를 들어

,

self.window!.clipsToBounds = true 

당신은 선택적 항목은 스위프트 일에, 그들에 대해 애플에서 문서를 확인하는 방법에 익숙하지 않은 경우.

+2

와우! 그리고 스위프트는 코딩을보다 효율적으로 만들어야한다고 생각했습니다. 감사! – marciokoko

관련 문제