사용자 정의 UIView
클래스가 있고 - (void)drawRect:(CGRect)rect
에 텍스트를 그려야합니다. 그러나 텍스트 블록이 시스템 글꼴 크기가 12 일 때 최대 너비가 84px로 제한되기를 원합니다. 텍스트가이 너비를 초과하면 잘라내어 마지막 세 문자를 "..."로 만들고 싶습니다.주어진 글꼴 및 사각형의 문자열 길이 가져 오기
예 :
"This is some text" // length okay
"Information co..." // length truncated
내가 NSString
의 - (CGSize)sizeWithFont:(UIFont *)font
을 통해 주어진 글꼴로 문자열의 폭을 계산할 수 있다는 것을 알고 있지만, 어떻게 내가 84px 폭의 최대 문자열 길이를받을 수 있나요? 내가 제대로 상황을 이해하고있는 경우
문제에 대한 신뢰할 수있는 단서가 많은 iOS에서 고정 폭 글꼴 (있는 경우)가없는 것입니다
- (CGSize)drawAtPoint:(CGPoint)point forWidth:(CGFloat)width withFont:(UIFont *)font lineBreakMode:(UILineBreakMode)lineBreakMode
그것. 그래서 너는 아마 6 'X'문자들과 같은 너비로 10 'i'문자들을 말하게하자. –
[이 블로그] (http://joshjustice.wordpress.com/2010/12/20/monospace-fonts-on- ios /)는 심지어 monospaced 글꼴이 iOS에서 실제로는 모노 스페이스가 아니라고 말합니다. : - 사용하고자하는 모든 문자열에 대해 sizeWithFont :를 사용하는 것이 더 낫습니다. –
방법이 있어야합니다. 'UILabel'은 그것을하고 있습니다. 올바른 길이의 바이너리 검색을 할 수 있었고 길이가 맞을 때까지 루프를 다시 시도했지만 나에게보기 흉한 것처럼 보였습니다 ... – user826955