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
방법으로 변수를 업데이트하고 어떻게
그냥 좋은 측정을 위해입니다 내 메서드의 변경 사항을 기준으로 레이어의 너비가 업데이트되지 않는 이유는 무엇입니까? 누구든지 나를 따라 잡을 수있는 아이디어가 있습니까?
감사합니다.