2014-10-13 3 views
0

내 응용 프로그램에 UILabel이 거의 없습니다. 이들 모두는 numberOfLines을 0으로 설정함으로써 여러 줄로 설정됩니다.이 중 일부는 1 줄을 포함하고, 일부는 2를 갖습니다. 제 문제는이 응용 프로그램의 언어 문법에 따라 특정 단어가 끝나지 않아야한다는 것입니다. 줄의.특정 단어 다음에 줄 바꿈 사용 안 함

예를 들어, "John은 화석과 우표를 수집하고 있습니다"라고 대답하십시오.

이 줄은 단어 "and"다음에 줄 바꿈이 표시 될 정도로 길어집니다. 그것을 할 수

John is collecting fossils 
and stamps 

을 : 문법에 따르면, 이런 일이 안된다, 그래서 나는이 단어 앞에 줄을 중단 할, 그래서 대신의 줄 바꿈 후 :

John is collecting fossils and 
stamps 

내가 싶어 이걸 달성 할까? 저는 iOS 7 이상에서 작업 중이므로 이전 iOS 버전과의 호환성에 신경을 쓸 필요가 없습니다.

답변

0

해결 방법은 두 가지 방법으로 UILabel의 하위 클래스를 만드는 것입니다. 나는 단지 단어 "A"(비슷한 솔루션은 여러 단어로 할 수있다) 후 줄 바꿈을 사용하지 않을 것을 가정하자 : 대체됩니다

- (void)setText:(NSString*)newText { 

    [super setText:[self fixSpaces:newText]]; 

} 

- (NSString*)fixSpaces:(NSString*)originalText { 

    NSMutableString* tempString = [[NSMutableString alloc] initWithString:originalText]; 
    [tempString replaceOccurrencesOfString:@"a " withString:@"a " options:NSLiteralSearch range:NSMakeRange(0, tempString.length)]; 
    return tempString; 

} 

문자열이 "A", 이잖아 표준 'A'와 공간. 그것을 대체 할 문자열은 화면에서 동일하게 보이지만 'a'이며 비 구분 공간 (MAC - Option + Space에서)입니다. 텍스트를 UILabel로 설정하는 표준 방법으로 텍스트를 설정하면 원하는대로 작동하지만 문자열을 레이블 텍스트와 비교하면 작동하지 않습니다 (단절되지 않는 공백을 공백으로 대체하여 비교하기 쉽습니다). 스토리 보드 또는 펜촉에 텍스트를 설정하면 자연스럽게 작동하지 않습니다.