iOS
[iOS] UIView를 UIImage로 만들기: 이미지 백그라운드컬러 바꾸기
ohlee52
2024. 6. 29. 18:18
반응형
환경
>Swift, UIKit
이슈
>UIView를 UIImage로 만들어서 PDF파일을 생성하는 과정에서 백그라운드색 통제가 안됨
삽질
> UIView 백그라운드가 안먹는줄 알고(투명이었음), 백그라운드컬러 설정 시점을 여러번 바꿔봄
>뷰 백그라운드는 문제 없었고 이미지 배경색이 문제였음
해결
>이미지 렌더링 과정에서 이미지 백그라운드 설정
func asImage() -> UIImage {
let renderer = UIGraphicsImageRenderer(bounds: bounds)
return renderer.image { rendererContext in
// 배경색 설정
UIColor.white.setFill()
rendererContext.fill(bounds)
layer.render(in: rendererContext.cgContext)
}
}
func makeImages(diaries: [Diary], font: UIFont, bookID: String)-> [PDFImage] {
var images: [PDFImage] = []
for diary in diaries {
let image = AppFileManager.share.loadImageFromDoument(fileName: Constants.FileNames.imageName(id: diary.objectId.stringValue)) ?? UIImage(named: "damda_text")
let view = PDFView(date: diary.date, question: diary.card?.question, text: diary.text, image: image, font: font)
let viewImage = view.asImage()
images.append(PDFImage(image: viewImage, size: .zero, quality: 1, options: [.compress]))
}
let emptyView = PDFView(date: nil, question: nil, text: "", image: nil, font: font)
let emptyViewImage = emptyView.asImage()
while (images.count % 2) != 0 {
images.append(PDFImage(image: emptyViewImage, size: .zero, quality: 1, options: [.compress]))
}
return images
}
반응형