코코아의 텍스트 필드의 배경으로 이미지를 어떻게 사용할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/765104

  •  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]를 만들고 이미지를 뒤에 놓습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top