문제

표준 글꼴 크기로도 uitextfield의 텍스트가 흐려 지거나 반 알리 아스에 문제가 있습니다. 컨트롤이 첫 번째 응답자 일 때 텍스트가 선명하게 보이지만 초점을 잃으면 다시 흐려졌습니다.

alt text
(원천: mikeweller.com)

이것을 고치는 방법을 아는 사람이 있습니까?

도움이 되었습니까?

해결책 2

좋아, 여기서 내 질문에 대답하고 있습니다.

Google을 통해이 버그에 대한 여러 참조를 찾았지만 모두가 글꼴 크기로 연주하여 주변에서 일했습니다. 많은 사냥 후 나는 발견했다 이 스레드 즉, 뷰의 프레임에 분수 픽셀 값이 포함되어있을 때 반 알리 아싱이 적용됩니다. 예를 들어 크기를 슈퍼 뷰의 일부로 계산하는 경우.

물론, 뷰의 프레임에 대한 cgrect 값을 (int)로 캐스팅하는 것이 완벽하게 작동했습니다. 예를 들어, 텍스트 필드가 슈퍼 뷰에 수직으로 중앙에있는 경우 다음과 같이 캐스트를 사용해야합니다.

textFieldWidth = 300;
textFieldHeight = 31;
offsetX = 0;
offsetY = (superview.bounds.size.height - textFieldHeight) / 2;

textField.frame = CGRectMake((int) offsetX,
                             (int) offsetY,
                             (int) textFieldWidth,
                             (int) textFieldHeight);

cgrect를 적분 값으로 변환하는 데 사용할 수있는 cgrectintegral 함수도 있습니다.

다른 팁

사용 cgrectintegral 텍스트 필드의 프레임이 정수 좌표를 기반으로하는지 확인합니다. 부분이 분수 좌표에있을 때 퍼지 항아리아를 얻을 수 있습니다.

비 분수 위치를 사용하는 것 외에도 Uitextfield에 중심이 아닌 수직 정렬을 사용해야합니다. 홀수 글꼴 크기와 함께 중앙 수직 정렬로 보입니다. 텍스트도 흐려집니다.

나는 약간의 좌절 후에 스스로 답을 발견하면서 기여하고 싶습니다.

InterfaceBuilder의 uitextfield의 강제 프레임 높이는 31 픽셀입니다. 이것은 크기를 조정하기 위해 클릭 할 수 없으며 IB의 프레임 속성에 설정할 수 없습니다. ViewDidload로 이동하여 프레임 높이를 32 픽셀로 조정해야하므로 문제가 해결되어야합니다.

미래의 IB 버전이이를 수정하기를 바랍니다.

나는 cgrectintegral과 물건을 사용해 보았다. 내 경우 IB에서 최소 글꼴 크기와 글꼴 크기를 변경하면서 그랬습니다.

나는 전에이 문제를 겪었다. 아래 솔루션은 원형 기능을 사용하여 분수 픽셀 값을 제거하기 때문에 모든 텍스트 또는 프레임 크기에 완벽하게 작동합니다. 해당 Uitextfield의 인스턴스화 후 다음 코드를 삽입하십시오.

CGRect temp = textField.frame;
temp.origin.x = round(temp.origin.x);
temp.origin.y = round(temp.origin.y);
textField.frame = temp;

단순히 설정 UITextField 짝수 값으로의 프레임 높이는 나에게 고정되었습니다.

솔루션 이 지역 크기 조정과 관련이있을 수 있으며 iOS는 레이어에 대한이 버그를 처리하지 않고 다양한 견해만을 관리합니다. Swift 4로 업데이트했습니다.

view.contentScaleFactor = UIScreen.main.scale
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top