다음과 같은 속성이있는 문자열을 만들 수 있습니다.NSView를 사용하여 NSAttributedString을 센터에 표시
- (NSMutableAttributedString *)makeText:(NSString *)txt : (NSString *)fontname : (CGFloat)tsize :(NSColor *)textColor :(NSColor *)shadowColor :(NSSize)offset {
NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowColor = shadowColor;
shadow.shadowOffset = offset;
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = 10.0f;
paragraphStyle.alignment = NSCenterTextAlignment;
NSMutableAttributedString *atext = [[NSMutableAttributedString alloc] initWithString:txt];
NSRange range = NSMakeRange(0,txt.length);
// alignment
[atext addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0,[atext length])];
...
...
return atext;
}
이 특성 문자열을 NSTextField로 설정하면 결과 특성 문자열이 올바르게 정렬됩니다. NSView의 서브 클래스로 보내면 문자열은 왼쪽 정렬됩니다. 이 정렬 된 문자열을 올바른 정렬로 표시 할 수있는 방법이 있습니까?
// .h
@interface imageView1 : NSView {
NSAttributedString *aStr;
}
// .m
- (void)drawRect:(NSRect)dirtyRect {
[aStr drawAtPoint:NSMakePoint((self.frame.size.width-aStr.size.width)/2.0f,(self.frame.size.height-aStr.size.height)/2.0f)];
}
감사합니다. OS 버전은 10.8입니다.
죄송합니다. 내 IOS 기반 답변 (현재 삭제됨)에 대해 죄송합니다. - iOS에서도 TextKit을 사용하여 그릴 수 있습니다. 나는 당신이 비슷한 것을 할 수 있다고 확신합니다. 이 예제를 보라. (iOS지만 OS X에서는 거의 동일하다.) 옵션 2 : https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch10p510attributedStringDrawing2/ch23p773attributedStringDrawing/StringDrawer. m – matt
알 겠어. 고마워, 매트. –
또한'drawWithRect : options :'에있는 문서를 보아라. 이것은 더 간단하다. (틀린 대답과 같다.) – matt