코코아의 텍스트 필드의 배경으로 이미지를 어떻게 사용할 수 있습니까?
-
12-09-2019 - |
문제
코코아의 텍스트 필드의 배경으로 이미지를 사용할 수 있습니까? 그렇다면 어떻게?
해결책
이것이 "올바른"방법인지는 모르겠지만, 가장 먼저 떠오르는 것은 Nstextfield의 사용자 정의 서브 클래스를 만드는 것입니다.
- (void)awakeFromNib
{
[self setDrawsBackground:NO];
}
- (void)drawRect:(NSRect)rect
{
[super drawRect:rect];
[self lockFocus];
[[NSImage imageNamed:@"<#image filename#>"] drawInRect:rect
fromRect:rect
operation:NSCompositeSourceOver
fraction:1.0];
[self unlockFocus];
}
다시 말하지만, 그것은 필수 부분의 대략적인 개요입니다.
어쨌든, 내가 말했듯이, 이것이 실제로 "올바른"방법인지 확실하지 않습니다 (또는 그 문제에 대해 "올바른"방법이 있다면) Nstextfield의 배경 이미지가 제공됩니다. .
Joshua의 의견에 대한 응답으로 편집합니다 (작은 댓글 상자에 충분한 공간이 없을 것입니다) :
프로젝트에 이미지를 추가하려면 프로젝트 창에있는 곳에서 이미지를 드래그 할 수 있습니다 (Xcode 편집 환경을 설정하는 방법에 따라 프로젝트 창의 중간에있는 파일의 주요 목록은이 이미지를 드래그합니다. 당신을 위해 다를 수 있습니다).
서브 클래스를 위해 NSTextField
, 새 Objective -C 클래스 파일 (파일 -> 새 파일…)을 만들고 싶지만 클래스가 NSTextField
대신에 NSObject
. 즉, 헤더 파일은 다음과 같습니다.
#import <Cocoa/Cocoa.h>
@interface BGImageTextField : NSTextField
{
}
@end
코드의 나머지 부분은 구현 파일의 본문에 추가하려고합니다 (BGImageTextField.m
, 예를 들어), 구체적으로 @implementation
그리고 @end
키워드.
또한 두 가지를 언급하고 싶습니다. 먼저, 사본을 선택하는 것이 좋습니다 Mac OS X를위한 코코아 프로그래밍, Aaron Hillegass에 의해 - 그것은 내가 방금 갔던 대부분의 코코아 기본 사항을 다루며, 일반적으로 코코아를 배우는 가장 좋은 방법 중 하나입니다. 둘째, 내 접근 방식이 작동하지만 아마도 최근에 발견 한 이후로는 최선의 접근 방식이 아닙니다. 이 게시물, 이것은 Nstextfield를 확장하는 더 나은 방법으로 암시하는 것 같습니다.
다른 팁
Nstextfield를 서브 클래싱하는 대신 배경색 투명한 [NSCOLOR CLEARCOLOR]를 만들고 이미지를 뒤에 놓습니다.