2012-04-23 1 views
3

뷰에 여러 개의 UILabels가있는 뷰가 여러 개 있습니다. (모두 Interface Builder에서 구성).CGAffineTransformMakeScale 후 흐릿한 텍스트 수정

그러면 화면을 집을 때 내보기의 "더 작은"복제본을 만들려고합니다.

view.transform = CGAffineTransformMakeScale(.5, .5); 

을 한 후 나는 또한 뷰의 프레임을 조정합니다

이 작업을 수행하기 위해 나는이 적용됩니다.

변환 후 모든 UILabels의 텍스트가 "흐릿하게"됩니다. 실물 크기보기에서와 같이 완벽한 픽셀을 유지하지 못합니다.

변형 후 라벨의 픽셀 화를 늘릴 수있는 방법이 있습니까?

답변

8

UIView 또는 CALayer에 변환을 적용하면 해당 레이어 또는보기의 래스터 화 된 비트 맵이 단순하게 비율 조정됩니다. 이는 새로운 눈금에서 다시 렌더링되지 않기 때문에 결과 UI 요소의 흐려짐을 초래할 수 있습니다.

텍스트 나 이미지가 새로운 축척 비율로 선명하게 나타나게하려면 수동으로 크기를 조정하여 변형을 적용하는 대신 다시 그리기해야합니다. UHcrollView에서 호스팅되는 UIView를 this answer에 작성한 한 가지 방법을 설명했습니다.

하나의 기본보기에 대해보기 계층 구조를 탐색하고 각 하위보기의 프레임을 반복적으로 읽고 크기를 줄인 다음 해당 내용을 다시 그리는 단일 메서드를 만들 수 있습니다. 변환은 여전히 ​​대화 형 조작 또는 애니메이션에 사용하기에 적합하지만 조작 또는 애니메이션이 끝날 때 전체 수동 크기 조정 및 다시 그리기를 트리거 할 수 있습니다.

+0

나는 이것이 사실일지도 모른다 생각했다. –