글자 중간중간의 색상, 크기, 하이퍼링크를 주고 싶다면 NSMutableAttributedString 클래스를 사용하면 된다.
아래 코드를 사용하면 다음과 같은 화면이 나온다.
NSMutableAttributedString *stringAtterbuted = [[NSMutableAttributedString alloc] initWithString:@"가나다라 마바사아 아자차카 타파하"];
[stringAtterbuted addAttribute:NSFontAttributeName
value:[UIFont systemFontOfSize:20.0]
range:NSMakeRange(0, 3)];
[stringAtterbuted addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(0,3)];
[stringAtterbuted addAttribute: NSLinkAttributeName value: @"http://www.google.com" range: NSMakeRange(4, 3)]; //UITextLable과 UITextField는 지원하지 않는다.
[stringAtterbuted addAttribute: NSStrikethroughStyleAttributeName value:[NSNumber numberWithInteger: NSUnderlineStyleSingle] range: NSMakeRange(7,3)]; //삭제 표시 라인
[stringAtterbuted addAttribute:NSFontAttributeName
value:[UIFont fontWithName:@"HelveticaNeue-CondensedBold" size:8.0f]
range:NSMakeRange(12, 3)];
[stringAtterbuted addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(12, 3)];
[stringAtterbuted addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:NSUnderlineStyleSingle] range:NSMakeRange(15, 3)]; //언더라인
textViewString.editable = NO;
textViewString.dataDetectorTypes = UIDataDetectorTypeLink;
[labelString setAttributedText:stringAtterbuted]; // 텍스트 라벨
[textViewString setAttributedText:stringAtterbuted]; // 텍스트 뷰
하이퍼링크의 경우 현재 버전(iOS 9버전)에서는 UITextLabel과 UITextField는 지원하지 않고 있으며 UITextView에서 수정이 안되도록 editable 속성을 NO, 그리고 dataDetectorTypes을 UIDataDetectorTypeLink타입으로 변경 해 주어야 한다. (스토리보드나 xib파일에서도 변경 할 수 있다.)
여기서 예시에 사용한 속성은
NSFontAttributeName : 폰트와 글자 사이즈 변경
NSForegroundColorAttributeName : 글자 색상 변경
NSLinkAttributeName : 하이퍼링크
NSStrikethroughStyleAttributeName : 삭제 표시 라인
NSUnderlineStyleAttributeName : 언더라인
이며 사용 가능한 속성은 아래와 같다.
'iPhone' 카테고리의 다른 글
코드로 오토레이아웃 제어하기 (0) | 2016.04.11 |
---|---|
코드 비교 프로그램 DiffMerge (0) | 2015.11.24 |
iOS 9.1 in house app 설치 오류 해결 방법 (0) | 2015.10.23 |
iPhone 알림 사용확인 팝업 다시 띄우는 법 (Resetting the Push Notifications Permissions Alert on iOS) (0) | 2015.07.03 |
가로화면에서 상단 상태바(StatusBar)가 보이지 않을 경우 (0) | 2015.06.04 |