2016-07-21 2 views
0

나는 UILabel을 가지고 있습니다 (그러나 이는 UIView에 적용됩니다). 나는 UIImage에 레이블을 그리려고합니다.변환을 사용하여 UILabel 그리기

첫째, 나는 레이블로 변환을 적용한 :

let label = UILabel(frame: CGRectMake(0,0,100,100)) 
label.text = "Fizz Buzz" 
label.transform = CGAffineTransformRotate(label.transform, 5) 
label.transform = CGAffineTransformScale(label.transform, 2, 2) 
label.setTranslation(CGPointMake(10, 15), inView: view) 

가 그럼, 이미지에 레이블을 그리려.

UIGraphicsBeginImageContextWithOptions(view.frame.size, false, 0) 
let context = UIGraphicsGetCurrentContext() 
label.drawTextInRect(view.frame) 
let result = UIGraphicsGetImageFromCurrentImageContext() 
UIGraphicsEndImageContext() 

지금 나타나는 result있는 UIImage 적절한 텍스트 라벨의 이미지이지만, 변형없이. 보기가 변환으로 그려지는 것을 어떻게 보장합니까?

답변

0

텍스트 만 이미지에 추가하려면 현재 UIImage 데이터를 가져와야합니다. 아래에 이미지에 텍스트를 추가하는 간단한 함수가 있습니다. UIImageView를 사용하는 경우 현재 할당 된 이미지를 가져 와서 함수에 전달하고 함수가 반환 한 이미지를 해당 UIImageView로 설정할 수 있습니다.

extension UILabel 
{ 
    func getRenderedImage() -> UIImage 
    { 
    UIGraphicsBeginImageContextWithOptions(self.frame.size, false, 0) 

    var context = UIGraphicsGetCurrentContext() 
    CGContextSaveGState(context) 

    self.layer.renderInContext(context!) 

    let renderedImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return renderedImage 
    } 
} 

샘플 사용법 :

let newImage = label.getRenderedImage() 
imagView.image = newImage 
+0

흠을이 아마 작동하지만 것입니다 실제로 * 거의 * 작업, 그냥 내가 제작 한 적절한 변환을 적용하지 않는 이미지에 UILabel의 드로잉의 길 보기. 레이블을 계속 사용하고 그려진대로 레이블을 변환 할 수있는 방법이 없습니까? – Kenneth

+0

게시 한 코드 한 줄만보고 문제를 완전히 이해하기 어렵 기 때문에 다른 코드를 게시하십시오. 감사. –

+0

물론, 나는 명확성을 위해 게시물을 편집했습니다. – Kenneth

0

작은 변화를 시작하려면이 두 번째 코드의 3 라인에서해야한다. 을 label.drawTextInRect(label.frame)으로 바꾸십시오.

그러나 변환을 올바르게 유지하기 위해 가장 쉬운 방법은 래퍼 UIView를 만드는 것이 었습니다. 여전히 레이블에 변환을 적용하지만 래퍼보기를 레이블 대신 UIImage에 그립니다. 라인 사용

wrapperView.drawViewHierarchyInRect(wrapperView.frame, afterScreenUpdates: true)