2011-09-06 3 views
1

저에게 맞는 CoreText 텍스트 줄 바꿈 코드를 얻을 수 없습니다. 그것은 너무 복잡합니다. 나는 UILabel을 두 개로 나눌 다른 경로를 시도해 볼 것입니다.기존 UILabel에 맞게 충분한 텍스트를 계산하십시오.

내가 얻으려고하는 것은 텍스트가 내 고정 크기의 직사각형 이미지 주위를 감싸는 것처럼 보이는 것입니다. 항상 같은 차원입니다.

그래서 이미지 옆에있는 UILabel이 정확히 채워지면 이미지 아래에 다른 UILabel이 만들어집니다.

이제 첫 번째 UILabel의 텍스트를 어떻게 계산하여 UILabel의 전체 너비에 맞게 만들었습니까? 너무 짧지 않거나 끝 부분이 잘리지 않습니까?

+0

어떻게하면 이미지 주위에 텍스트를 감쌀 수 있을까? – Adam

+0

^^ sry, 나는 sth을 놓쳤다 ... (내 의견을 삭제할 것입니다) – thomas

답변

0

아래 링크를 클릭하시면 도움을 받으실 수 있습니다. 대신 @Fabian Kreiser 제안으로 웹보기를 사용하는 라벨의 일부 사용자 정의 텍스트에 "링크"를 만들려면

, 당신은 샘플 코드에 제공 참조 내 OHAttributedLabel 클래스 (you can find it this link)

를 사용 sould 내 github 저장소 : 내 addCustomLink:inRange: 메서드를 사용하여 텍스트 범위에 텍스트 ("iPhone"이라는 단어가 반복 될 때마다 반복하여 결정할 수있는 범위)에 링크 (사용자 정의 URL 포함)를 추가 할 수 있습니다. 그런 다음 대리자 메서드 OHAttributedLabel에서 링크가 도청되면 잡아서 필요한대로 수행 할 수 있습니다.

+0

uiimageview 주위에 텍스트를 감싸고 싶습니다. – Adam

1

음,이 해야지 원하는 폭에 맞는 마스터 문자열의 하위 문자열을 얻기 위해 일할 : 물론

//masterString is your long string that you're looking to break apart... 
NSString *tempstring = masterString; 

while (someLabel.bounds.size.width < [tempString sizeWithFont:someLabelLabel.font].width) { 
    NSMutableArray *tempArray = [NSMutableArray arrayWithArray:[tempString componentsSeparatedByString:@" "]]; 
    //Remove the last object, which is the last word in the string... 
    [tempArray removeLastObject]; 

    //Recreate the tempString with the last word removed by piecing the objects/words back together... 
    tempString = @""; 
    for (int i=0; i < tempArray.count - 1; i++) { 
     tempString = [tempString stringByAppendingFormat:@"%@ ", [tempArray objectAtIndex:i]]; 
    } 
    //You must append the last object in tempArray without the space, or you will get an infinite loop... 
    tempString = [tempString stringByAppendingFormat:@"%@", [tempArray objectAtIndex:tempArray.count - 1]]; 
} 
//Now do whatever you want with the tempString, which will fit in the width desired... 

, 이것은 당신이 분리가 줄 바꿈을 사용하여 발생 할 가정한다. 당신이 단어를 생각하지 않으면 자신이 완벽하게 원하는 폭을 차지하기 위해 (문자 랩 즉), 대신 이렇게 따로 따로 잘라 되 :

NSString *tempstring = masterString; 

while (someLabel.bounds.size.width < [tempString sizeWithFont:someLabelLabel.font].width) { 
    tempString = [tempString substringToIndex:tempString.length - 1]; 
} 
//Now do whatever you want with the tempString, which will fit in the width desired... 

남은 문자열의 나머지 조각을 얻기 위해, 다음을 수행하십시오 :

NSString *restOfString = [masterString substringFromIndex:tempString.length]; 

희망이 있습니다. 나는이 코드를 제대로 테스트하지 못했다는 것을 인정해야한다. 비록 과거에 비슷한 일을 해왔다. ...

+0

한 가지를 이해하십시오. 하위 문자열이 "UILabel의 전체 너비에 맞게 짧거나 끝이 잘리지 않으면 서"맞춰지기를 원하지만 두 가지 방법은 글꼴을 조정하여 레이블 당 맞게 만들 수 있습니다 기초 (사각형 주위의 각 하위 문자열/레이블마다 다른 크기의 글꼴을 가질 가능성이 있음) 또는 글꼴을 일정하게 유지하면서 단어를 분할 할 수있는 문자 배치 (코드를 추가 한)를 사용해야합니다. 각 줄 끝에서 떨어져 ... – Ashwin

관련 문제