2015-08-06 5 views
0

Я вытащил image из album artwork выбранной песни с помощью MPMediaItemArtwork и я пытаюсь установить это произведение как образ background аналогично тому, как spotify имеет это установить, однако я получаю две ошибкиНевозможно установить обложку альбома, как цвет фона

Нельзя присвоить значение типа «UIColor» типу значения «UIColor?»

, а также

Не удалось найти перегрузку 'инициализации', который принимает входящие в комплект поставки аргументы

И вот мой код ниже

func setAlbumCover(){ 

    var AlbumImage = MPMediaItemArtwork() 

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

    if !UIAccessibilityIsReduceTransparencyEnabled() { 
     self.view.backgroundColor = UIColor.clearColor() 
     let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.ExtraLight) 
     let blurEffectView = UIVisualEffectView(effect: blurEffect) 
     blurEffectView.frame = self.view.bounds 
     self.view.addSubview(blurEffectView) //if you have more UIViews on screen, use insertSubview:belowSubview: to place it underneath the lowest view instead 

     //add auto layout constraints so that the blur fills the screen upon rotating device 
     blurEffectView.setTranslatesAutoresizingMaskIntoConstraints(false) 
     self.view.addConstraint(NSLayoutConstraint(item: blurEffectView, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Top, multiplier: 1, constant: 0)) 
     self.view.addConstraint(NSLayoutConstraint(item: blurEffectView, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) 
     self.view.addConstraint(NSLayoutConstraint(item: blurEffectView, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Leading, multiplier: 1, constant: 0)) 
     self.view.addConstraint(NSLayoutConstraint(item: blurEffectView, attribute: NSLayoutAttribute.Trailing, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Trailing, multiplier: 1, constant: 0)) 
    } else { 
     self.view.backgroundColor = UIColor.whiteColor() 
    } 

} 

I знаю, что у меня, вероятно, есть глупая ошибка, но я не могу понять это

ответ

0

Вы создаете UIImage, позвонив по телефону UIImage(named:), который ожидает строку, и вы передаете экземпляр MPMediaItemArtwork. Это собирается компиляции:

let albumArtwork = MPMediaItemArtwork() 
let size = CGSize(width: 250, height: 250) 
let image = albumArtwork.imageWithSize(size) 
self.view.backgroundColor = UIColor(patternImage: image!) 

заметить также, что вы установите цвет фона, а затем изменить его несколько строк после, так что изображение не будет отображаться:

self.view.backgroundColor = UIColor(patternImage: image!) 
if !UIAccessibilityIsReduceTransparencyEnabled() { 
    self.view.backgroundColor = UIColor.clearColor() 
    // ... some more code .... 
} else { 
    self.view.backgroundColor = UIColor.whiteColor() 
} 
+0

Так как это исправить первую часть? –

+0

предоставляют ** изображение ** для 'UIColor (patternImage:)', полученного из 'MPMediaItemArtwork', ** не самого произведения **. Код выше не работает? Вы действительно загружаете «MPMediaItemArtwork» из музыкальной библиотеки или создаете ее таким образом? – libec

Смежные вопросы