2017-01-28 2 views
1

Я пытаюсь сохранить свой вид (красный вид) в Фотобиблиотеке устройства, но после сохранения его имеет белый цвет.Почему мой UIView рисует как белый прямоугольник?

func saveViewToImage() 
{ 
    redView.backgroundColor = UIColor.red 
    let rect = CGRect(origin: CGPoint.zero, size: redView.frame.size) 

    UIGraphicsBeginImageContextWithOptions(rect.size, false, UIScreen.main.scale) 

    redView.draw(rect) 
    let resultImage = UIGraphicsGetImageFromCurrentImageContext() 

    UIGraphicsEndImageContext() 

    UIImageWriteToSavedPhotosAlbum(resultImage!, nil, nil, nil) 
} 

Почему?

+0

Это является хороший вопрос. Я думаю, что это может помочь другим людям с той же проблемой, если вы изменили название на нечто вроде «Почему мой UIView рисуется как белый прямоугольник?» поскольку на самом деле это не имеет ничего общего с сохранением фотоальбома. – par

+0

Хорошая точка. Спасибо. Переименованная тема –

ответ

1

UIViewdraw(_ rect:) способ не делает ничего по умолчанию. Он там, поэтому вы можете подкласса UIView и сделать свой собственный рисунок.

Чтобы сделать ваш взгляд в контексте, вам нужно использовать одну из функций, специально предназначенных для этого.

В вашем случае вы можете изменить redView.draw(rect) к:

redView.drawHierarchy(in: rect, afterScreenUpdates: true)

Существуют и другие методы, которые вы могли бы использовать также, например, как этот, который использует слой вида по:

guard let context = UIGraphicsGetCurrentContext() else { return } 

redView.layer.render(in: context) 
+0

Все отлично! Большое спасибо! –

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