1

CAConstraint의 눈금을 바인딩하려고합니다. 수퍼 레이어와 관련하여 CALayer의 너비가 매초 실행되는 예약 된 타이머 방법에서 업데이트중인 변수를 기반으로 진행률 (QTMovie)을 나타낼 수 있습니다. CALayer의 너비는 진행률이 0 일 때 0.0f이고 진행이 완료 될 때 수퍼 레이어의 너비가 100 %가되어야합니다 (즉, currentProgress == 1.0f). 다음과 같이 내가 제약으로 레이어를 만든 방법은 다음과 같습니다CAConstraint의 축척을 바인딩하는 방법은 무엇입니까?

self.progressLayer = [[[CALayer alloc] init] autorelease]; 

progressLayer.name = @"progressLayer"; 
progressLayer.backgroundColor = [Utilities blackColour]; 

[progressLayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMinX relativeTo:@"superlayer" attribute:kCAConstraintMinX]]; 
[progressLayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintHeight relativeTo:@"superlayer" attribute:kCAConstraintHeight]]; 
[progressLayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMidY relativeTo:@"superlayer" attribute:kCAConstraintMidY]]; 
CAConstraint* constraint = [CAConstraint constraintWithAttribute:kCAConstraintWidth relativeTo:@"superlayer" attribute:kCAConstraintWidth scale:0.0f offset:0.0f]; 
[constraint bind:@"scale" toObject:[MediaPlayer sharedMediaPlayer] withKeyPath:@"currentProgress" options:nil]; 
[progressLayer addConstraint:constraint]; 

내가 초마다 해고 내 방법에 currentProgress 변수를 업데이트 할 때 CALayer 업데이트하지 않는다는 것입니다이 문제 그것은 너비입니다. 내 코드를 테스트하는 것으로 시작하려면 진도 값을 0.01f까지 증가시키고 금액을 기록하고 있으며 확실히 업데이트 중입니다. 그러나 버튼 클릭에 따라 금액을 업데이트하면 레이어가 올바르게 업데이트됩니다.

- (void) checkProgress:(NSTimer*)timer { 
    self.currentProgress += 0.01f; 
    NSLog(@"checkProgress: %f", currentProgress); 
} 

그리고 버튼 누름에 내가 지금처럼 업데이트 :

self.currentProgress += 0.1f; 

MediaPlayer 클래스 내에서 내 NSTimer 방법으로 변수를 업데이트하고 어떻게

그냥 좋은 측정을 위해입니다 내 메서드의 변경 사항을 기준으로 레이어의 너비가 업데이트되지 않는 이유는 무엇입니까? 누구든지 나를 따라 잡을 수있는 아이디어가 있습니까?

감사합니다.

답변

1

내 버튼을 클릭하면 레이어가 자체 업데이트를 수행하는 것처럼 보이는 "형제/자매"레이어 (다른 레이어가 슈퍼 레이어에 추가됨)를 수정하는 것으로 나타났습니다. 다른 레이어를 수정하지 않아서, 내가 제약 한 레이어는 업데이트되지 않았습니다. 따라서 변수를 CAConstraint으로 제한하면 CALayer이 업데이트되지 않습니다. 아마도 이것은 CAConstraint에 눈금에 대한 설정자가 없기 때문일 수 있습니다. 그리고 세터가 있다면 그것은 레이어를 업데이트해야한다고 말할 수 있습니다. 그래서 저는 제 레이어의 너비를 다른 방향으로 설정하는 방법에 대해 살펴 보았습니다.

관련 문제