2017-12-20 50 views
0

에 텍스트를 추가하여 UIImage와 함께 UICollectionViewCell이 있고 UIImage 위에 텍스트가 겹쳐진 단색 흰색 배경이 표시되도록하려고합니다. 나는이 개별적으로 각각의 작업을 수행하는 방법까지 검색이 내가 가진 무엇 :단색으로 UIImage를 만들고 위 (Swift)

let textImage = textToImage(drawText: "Placeholder text", inImage: whiteImage, atPoint: CGPoint(x: 20.0, y: 20.0)) 
: 다음

let rect = CGRect(origin: .zero, size: CGSize(width: 1, height: 1)) 
UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0) 
let color = UIColor.white 
color.setFill() 
UIRectFill(rect) 
let whiteImage = UIGraphicsGetImageFromCurrentImageContext() 
UIGraphicsEndImageContext() 

내가 가진 기능 textToImage를 호출하고 있습니다 :

솔리드 색상으로있는 UIImage 만들기

textToImage 기능은 여기서

func textToImage(drawText text: NSString, inImage image: UIImage, atPoint point: CGPoint) -> UIImage { 
    let textColor = UIColor.black 
    let textFont = UIFont(name: "Helvetica Neue", size: 74) 

    UIGraphicsBeginImageContext(image.size) 

    let textFontAttributes = [ 
     NSFontAttributeName: textFont, 
     NSForegroundColorAttributeName: textColor, 
     ] as [String : Any] 
    image.draw(in: CGRect(origin: CGPoint.zero, size: image.size)) 

    let rect = CGRect(origin: point, size: image.size) 
    text.draw(in: rect, withAttributes: textFontAttributes) 

    let newImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return newImage! 
} 

그리고 textImage를 UICollectionViewCell의 UIImage로 설정합니다.

textToImage 함수는 일반 이미지에서 작동하지만 먼저 단색 이미지를 만든 다음 새로 만든 이미지에서 textToImage를 호출하면 단색이 표시되지만 텍스트는 표시되지 않습니다. 무엇이 여기에 문제가 될 수 있는지에 대한 조언이 있습니까? 감사!

답변

0

몇 가지 문제가 있습니다. 귀하의 기본은 whiteImage은 1x1 포인트입니다. 따라서 textToImage으로 전달하면 새로운 1x1 이미지가 생성됩니다. 작은 이미지에서 텍스트를 읽기가 어렵습니다.

더 유용한 크기로 whiteImage을 작성하면 모든 것이 더 좋습니다.

UIGraphicsBeginImageContext(image.size) 

에 :

let rect = CGRect(origin: .zero, size: CGSize(width: 600, height: 300)) // pick a useful size 

는 또한 변경해야

UIGraphicsBeginImageContextWithOptions(image.size, false, image.scale) 
0

@rmaddy 몇 가지 중요한 사항을 지적,하지만 당신은 이것에 대한 API를 UIKit 사용하여 고려 했는가? 나는 당신이 그것을 만든 후에 당신이 이미지로 무엇을 할 필요가 있는지 (서버에 보내고, 그것을 라이브러리 등에 저장하는 등) 필요가 있는지 알지 못한다. 그러나 당신이 묘사하고있는 것은 정말로 쉽고, 또한 실제로 수행 할 것이다. (이것은 중요하지 않을 수도 있습니다. 이미지의 크기가 얼마나 큰지는 알지 못합니다. 이미지보기의 배경색을 흰색으로 설정하고 그 위에 레이블을 추가하면됩니다.

이미지를 캡처하여 처리해야하는 경우에도 iOS를 사용하면 UIView를 매우 쉽게 캡쳐 할 수 있습니다. Here은 관련 링크입니다.