2016-07-28 51 views
7

我想在swift語言中爲我的ViewController設置擱淺的圖像。如何在swift中設置背景圖片?

我使用下面的代碼:

self.view.backgroundColor = UIColor(patternImage: UIImage(named:」bg.png")!) 

但應用越來越crash.It是顯示錯誤被拋出,因爲像「bg.png」像

「fatal error: unexpectedly found nil while unwrapping an Optional value」(Because of the 「!」)

+1

刪除「!」符號或檢查nil值以設置backgroundImage –

+0

,因爲Image無法找到,它的nil和您的嘗試強制打開nil值。 – iMuzahid

回答

16

錯誤不存在。通常,當您將圖像導入到Assets.xcassets文件夾時,文件擴展名將被刪除。因此,嘗試以下操作:

self.view.backgroundColor = UIColor(patternImage: UIImage(named:"bg")!) 

你會發現,背景將看起來不如預期,你需要做的解釋here如下:

 UIGraphicsBeginImageContext(self.view.frame.size) 
    UIImage(named: "bg")?.draw(in: self.view.bounds) 
    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()! 
    UIGraphicsEndImageContext() 
    self.view.backgroundColor = UIColor(patternImage: image) 
+1

非常感謝,它爲我工作。 –

+0

@drdrdrdr你能否檢查我的問題http://stackoverflow.com/questions/43995059/how-to-add-images-for-different-screen-size-from-assets-xcassets-in-xcode-8? –

0

更新swift3:

UIGraphicsBeginImageContext(self.frame.size) 

    UIImage(named: "bg").draw(in: self.bounds) 

    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()! 

    UIGraphicsEndImageContext() 

    backgroundColor = UIColor(patternImage: image) 
2

試試這個Swift4:

let backgroundImage = UIImageView(frame: UIScreen.main.bounds) 
backgroundImage.image = UIImage(named: "bg.png") 
backgroundImage.contentMode = UIViewContentMode.scaleAspectFill 
self.view.insertSubview(backgroundImage, at: 0)