내 텍스트가 흰색 테두리로 둘러싸여지기를 바랍니다. 텍스트에 CATextLayer를 사용하고 있습니다. CATextLayer에 borderColor/borderWidth 속성이 없다는 것을 알고 있습니다. 물론 수퍼 클래스 (CALayer)의 속성을 사용할 수 있지만 텍스트 자체가 아닌 레이어 프레임 주위에 테두리를 그립니다. 아무도 내가 CATextLayer를 사용하여 이것을 달성 할 수있는 방법을 알고 있습니까? 누군가가 내 솔루션에 관심이 그냥 경우CATextLayer 글꼴 borderColor?
4
A
답변
5
:
기본적으로 직접 CoreText를 사용하지 않고 스트로크 (국경) 텍스트를 만드는 것이 가능하다. CATextLayer의 string 속성은 NSAttributedString을 허용합니다. 따라서 NSAttributedString에 스트로크 색상 및 스트로크 너비가있는 속성을 지정하는 것만 큼 쉽습니다.
불행히도 나는 글꼴 크기를 애니메이션화해야했습니다. 문자열 속성은 애니메이션 가능하지만 NSString 인 경우에만 가능합니다. 그래서 나는 CATextLayer를 서브 클래스 화하기로 결정했다. 많은 노력 끝에 CATextLayer의 문자열과 내용 속성이 상호 배타적이라는 것을 알게되었습니다. 즉, 문자열이나 내용이 표시됩니다. 나는 그 자신을 그리는 방법을 알아낼 수 없었다. display 및 drawInContext : ctx 메서드는 내용이 업데이트 될 때만 호출되지만 문자열 업데이트를 위해 호출해야하는 내용을 알지 못했습니다.
그래서 CALayer를 서브 클래 싱하는 자체 CATextLayer 클래스를 작성하기로 결정했습니다. fontSize라는 애니메이션 가능한 속성을 만들었습니다. 이 객체가 애니메이션되면 drawInContext : ctx 메서드가 호출됩니다. drawInContext : ctx 메서드에서 CoreText를 사용하여 새 문자열을 만들고 fontSize 속성을 사용하여 크기를 적절히 업데이트합니다. 글꼴 크기 애니메이션에 대해 걱정할 필요없이 솔루션에 관심있는 사람들을위한
3
:
@import QuartzCore;
@import CoreText;
- (void)addTextLayer
{
NSDictionary* attributes = @{ NSFontAttributeName : [UIFont boldSystemFontOfSize:40.0],
(NSString*)kCTForegroundColorAttributeName: (id)[UIColor blackColor].CGColor,
(NSString*)kCTStrokeWidthAttributeName: @(-2.0),
(NSString*)kCTStrokeColorAttributeName: (id)[UIColor whiteColor].CGColor };
CATextLayer* textLayer = [CATextLayer layer];
textLayer.string = [[NSAttributedString alloc] initWithString:@"Hello World" attributes:attributes];
// Do the rest...
}
관련 문제
- 1. DataGridViewCell Bordercolor
- 2. Multiline CATextLayer
- 3. CGContext와 함께 CATextLayer 사용
- 4. DevX GridControl for WinForms - BorderColor
- 5. UILabel/NSTextView 대 CATextLayer
- 6. CATextLayer + NSAttributtedString + CTParagraphStyleRef
- 7. MonoTouch에 AttributedString이있는 CATextlayer
- 8. 간단한 CATextLayer 스케일링 문제
- 9. CATextLayer wrapped sizeToFit?
- 10. CATextLayer 스크롤하지 않음
- 11. CATextLayer 문자열 속성에 애니메이션 적용
- 12. 자를 가진 다중 라인 CATextLayer
- 13. CATextLayer 및 문자 사이의 추적/간격
- 14. CATextLayer 문자열의 경계 상자를 계산하는 방법은 무엇입니까?
- 15. 아이폰 CATextLayer (QuartzCore 프레임 워크) 연결 문제
- 16. 캐싱 글꼴 - 글꼴
- 17. 글꼴
- 18. UITextView처럼 스크롤 가능한 CATextLayer 객체를 만들 수 있습니까?
- 19. 확장 미리보기 : NSTextView, NSTextField, CATextLayer 또는 drawInRect를 사용 하시겠습니까?
- 20. Windows의 잘린 글꼴 (글꼴 다람쥐)
- 21. 글꼴 테이블의 사용자 지정 글꼴?
- 22. QT : 글꼴 및 글꼴 너비
- 23. CSS : 글꼴 크기와 글꼴 정말
- 24. 글꼴 색상, 크기, 글꼴 변경
- 25. 글꼴 및 글꼴 크기 변경
- 26. CATextLayer에서 글꼴 크기 및 유형이 적용되지 않습니다.
- 27. WP7 실버 글꼴 앱의 맞춤 글꼴
- 28. 글꼴 크기를 변경하지 않고 글꼴 두께를 조절하십시오.
- 29. 유니 코드 문자 용 플라잉 글꼴 글꼴
- 30. Google 글꼴 또는 호스트 글꼴 직접 사용
뭔가 나에게 말하고는이 작업을 수행 할 수있는 유일한 방법은 대리자 메서드를'하나를 사용하고 서브 클래스'CATextLayer'하거나 것을 drawLayer : inContext :'실제 드로잉을 직접해라. –
댓글을 주셔서 감사합니다. 구현하기가 어렵다고 들립니다. 나는 드로잉을 직접하길 원합니다 ... – strave
[저급 텍스트 렌더링] (http://www.codeproject.com/KB/iPhone/Glyph.aspx)에서이 페이지를 확인하십시오. 처음에는 상당히 컸지 만 시간을 들여 처리하면 무슨 일이 일어나는지 요령을 알 수 있습니다. – pe8ter