iPhone

[objc] OHAttributedLabel 높이 계산 문제, NSAttributedString

tenn 2013. 9. 14. 15:00

UILabel을 사용할 때 NSString의 sizeWithFont를 사용하듯,

OHAttributedLabel을 사용하면, 자간의 차이 때문에 (일본어를 사용할 시에행간이 달라짐)

height의 결과가 달라진다.

특히 테이블에 넣었을 때, 애로사항이 꽃핀다.


해결방법으로는 구글 선생님과 상담결과 행간을 조절한다. 라고 하는데

뭘 잘못했는지 잘 안됨.

http://eikatou.net/blog/2012/09/ios_rich_uilabel_2/


CoreText의 버그라는 말도 보인다.

http://cafe.naver.com/mcbugi/255603

일본어의 문제는 인식하고 있지만, 영어의 문제는 확인하지 않았다.


//행간을 조절할 수 있다는데 테스트해보지 않음.

NSMutableAttributedString *attributedString;

attributedString = [[NSMutableAttributedString alloc] initWithString:str];

// [attributedString addAttribute:NSKernAttributeName value:@5 range:NSMakeRange(10, 5)];

http://stackoverflow.com/questions/7370013/how-to-set-kerning-in-iphone-uilabel



다른 방법이 없는 지 몇시간을 파닥대다가...

OHAttributedLabel에 문자열을 넣을 때, NSString이 아닌 NSAttributeString을 넣고,

계산할 때, NSAttributedString의 sizeConstrainedToSize를 사용하면, 달라진 자간에 대한 정확한 결과를 얻을수 있는 듯하다. 

간이테스트에는 그럴듯한 결과가 나왔지만, 실제 어플에 넣었을 때 어떻게 될지 확인해 보아야하겠다.