좋아,이게 내가 함께 연결 한 것입니다. 컨텍스트에서는 레이아웃 관리자가 내장되어있는 한 하위 레이어 (CATextLayer)가있는 사용자 정의보기가 있습니다. 다음은 CustomView.m의 awakeFromNib입니다.
- (void) awakeFromNib {
CALayer *layer = [CALayer layer];
layer.backgroundColor = [CGColorHolder black];
layer.layoutManager = [CAConstraintLayoutManager layoutManager];
[self setLayer:layer];
[self setWantsLayer:YES];
CATextLayer *textLayer = [CATextLayer layer];
textLayer.string = @"TextLater";
textLayer.name = @"textLayer";
textLayer.fontSize = 42.0f;
textLayer.alignmentMode = kCAAlignmentCenter;
[textLayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMidX relativeTo:@"superlayer" attribute:kCAConstraintMidX offset:0.0f]];
[textLayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMaxY relativeTo:@"superlayer" attribute:kCAConstraintMaxY offset:-50.0f]];
}
그런 다음 사용자 정의보기에 대해 mouseDown 메서드를 오버라이드합니다. -hitTest를 사용하여 mousedown이 발생한 지점을 포함하는 레이어를 반환 한 다음 레이어의 일부 속성을 설정하여 해당 지점이 맞았는지 표시합니다. 나는 이것이 정말 정교한의 관점에서 나를 걸리는까지 모르는
[window acceptsMouseMovedEvents];
:
- (void)mouseDown:(NSEvent *)theEvent {
CALayer *layer = [self.layer hitTest:NSPointToCGPoint([theEvent locationInWindow])];
layer.backgroundColor = [CGColorHolder red];
} 또한
, 당신은 반드시 포함하는 윈도우가의 mouseMoved 수락 이벤트를 확인해야합니다 UI. 여기에서 리턴 된 이름을 기반으로 리턴 된 레이어로 할 일을 위임 할 것입니다. 하지만 그건 정말 못 생겼어. 그래서 내가 여기서 내 자신의 질문에 대답을했지만, 나는 정말로 그들이 무엇을하는지 알고있는 누군가로부터 약간의 정보를 얻고 싶다! : D 고마워!