2010-03-11 3 views

답변

2

Google을 통해이 버그에 대한 참조가 많이 발견되었지만 모두가 글꼴 크기로 놀아서 해결했습니다. 많은 사냥을 한 후에 뷰의 프레임에 분수 픽셀 값이 들어있는 경우 앤티 앨리어싱이 적용되었다는 것을 발견했습니다 (예 : this thread). 슈퍼 뷰의 일부분으로 크기를 계산하면됩니다.

보기의 프레임에 대해 CGRect 값을 int으로 설정하면 완벽하게 작동합니다. 당신이 CGRect로 변환하는 데 사용할 수있는 CGRectIntegral 기능도 있습니다

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

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

: 당신이 당신의 텍스트 필드를 원하는 경우 예를 들어, 수퍼 수직 중심으로 할 수 있도록,이 같은 int 캐스트를 사용한다 적분 값.

+0

답변 해 주셔서 감사합니다. 가장 좋은 해결책 인 것 같습니다. – David

+0

인터페이스 빌더에서도 이런 일이 발생했습니다. 크기를 확인하여 분수가 포함되지 않았는지 확인했습니다. 내 솔루션 버튼을 재현하는 것이 절름발이입니다. 하지만 쉽게 할 수 있습니다. 버튼을 클릭하고 옵션 키를 누른 상태로 드래그하면됩니다. 이렇게하면 마지막 앤티 앨리어싱과 동일한 새로운 버튼이 만들어 지지만 적절한 앤티 앨리어싱이 적용됩니다. 그 후에 남은 일은 행동과 콘센트를 연결하고 다시 배치하는 것입니다. 오래된 버튼을 삭제하십시오. :) –

관련 문제