我想綁定一個CAConstraint
的比例,這樣一個CALayer
的寬度相對於它的超級層可以指示進度(QTMovie
)基於一個變量,我正在更新一個計劃中的定時器方法,每秒觸發一次。當進度爲零時,CALayer
的寬度應該爲0.0f,當進度完成時(即currentProgress == 1.0f
),超級層的寬度爲100%。我已經與約束創建的層的方法如下:如何綁定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
的進度值,並且記錄了金額,它肯定是更新的。但是,當我根據點擊按鈕更新金額時,圖層會正確更新。
只是良好的措施,這是我如何我MediaPlayer
類中更新變量在我NSTimer
方法:
- (void) checkProgress:(NSTimer*)timer {
self.currentProgress += 0.01f;
NSLog(@"checkProgress: %f", currentProgress);
}
而上按下一個按鈕更新它,像這樣:
self.currentProgress += 0.1f;
爲什麼不根據我的方法中的更改更新圖層的寬度,而是按按鈕上的更新?有沒有人有任何想法讓我跟着去嘗試解決這個問題?
謝謝!