2

我在 Uiprogressview 中使用自定义进度视图,并在 20 秒内填充固定颜色,但我希望它在 10 秒后填充不同的颜色,以便 2 秒后看起来像两个彩色圆圈,这是我的代码:

#import "CEViewController.h"

@interface CEViewController ()
{

}


@end

@implementation CEViewController

@synthesize progressView;
@synthesize progressSlider;
@synthesize playPauseButton;
@synthesize player;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    self.player = [[[CEPlayer alloc] init] autorelease];
    self.player.delegate = self;

    UIColor *tintColor = [UIColor orangeColor];
    [[UISlider appearance] setMinimumTrackTintColor:tintColor];
    [[CERoundProgressView appearance] setTintColor:tintColor];

    self.progressView.trackColor = [UIColor colorWithWhite:0.80 alpha:1.0];

    self.progressView.startAngle = (3.0*M_PI)/2.0;

}

- (void)viewDidUnload
{
    [self setProgressView:nil];
    [self setProgressSlider:nil];
    [self setPlayPauseButton:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (void)dealloc {
    [progressView release];
    [progressSlider release];
    self.player = nil;
    [playPauseButton release];
    [super dealloc];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

- (IBAction)progressSlider:(UISlider *)sender 
{
    self.player.position = sender.value;
    self.progressView.progress = sender.value;
}

- (IBAction)playPauseButton:(UIButton *)sender 
{
    if(sender.selected) // Shows the Pause symbol
    {
        sender.selected = NO;
        [self.player pause];
    }
    else    // Shows the Play symbol
    {
        sender.selected = YES;
        [self.player play];
    }
}



// MARK: CEPlayerDelegate methods

- (void) player:(CEPlayer *)player didReachPosition:(float)position
{
    self.progressView.progress = position;
    self.progressSlider.value = position;
}

- (void) playerDidStop:(CEPlayer *)player
{
    self.playPauseButton.selected = NO;
    self.progressView.progress = 0.0;
    self.progressSlider.value = 0.0;    
}
@end

我应该在哪里进行更改以获得我想要的输出,请帮助

4

1 回答 1

1

试试这个,otherColor用你的第二个半色代替。您可能需要修复一些语法错误,我的 Xcode 版本无法在这台计算机上运行,​​所以我无法检查。

#import "CEViewController.h"

@interface CEViewController ()
{
UIColor *progressColor;
BOOL colorChanged;
}


@end

@implementation CEViewController

@synthesize progressView;
@synthesize progressSlider;
@synthesize playPauseButton;
@synthesize player;
@synthesize progressColor;
@synthesize colorChanged;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    self.player = [[[CEPlayer alloc] init] autorelease];
    self.player.delegate = self;

    self.progressColor= [UIColor orangeColor];
    [[UISlider appearance] setMinimumTrackTintColor:self.progressColor];
    [[CERoundProgressView appearance] setTintColor:self.progressColor];

    self.progressView.trackColor = [UIColor colorWithWhite:0.80 alpha:1.0];

    self.progressView.startAngle = (3.0*M_PI)/2.0;
    colorChanged = false;
}

- (void)viewDidUnload
{
    [self setProgressView:nil];
    [self setProgressSlider:nil];
    [self setPlayPauseButton:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (void)dealloc {
    [progressView release];
    [progressSlider release];
    self.player = nil;
    [playPauseButton release];
    [super dealloc];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

- (IBAction)progressSlider:(UISlider *)sender 
{
    self.player.position = sender.value;
    if(sender.value >= 0.5 && colorChanged == false) {
        self.progressColor= [UIColor otherColor];
        [[UISlider appearance] setMinimumTrackTintColor:self.progressColor];
        [[CERoundProgressView appearance] setTintColor:self.progressColor];
        colorChanged = true;
    }
    self.progressView.progress = sender.value;
}

- (IBAction)playPauseButton:(UIButton *)sender 
{
    if(sender.selected) // Shows the Pause symbol
    {
        sender.selected = NO;
        [self.player pause];
    }
    else    // Shows the Play symbol
    {
        sender.selected = YES;
        [self.player play];
    }
}



// MARK: CEPlayerDelegate methods

- (void) player:(CEPlayer *)player didReachPosition:(float)position
{
    self.progressView.progress = position;
    self.progressSlider.value = position;
}

- (void) playerDidStop:(CEPlayer *)player
{
    self.playPauseButton.selected = NO;
    self.progressView.progress = 0.0;
    self.progressSlider.value = 0.0;    
}
@end
于 2013-01-02T00:13:00.347 回答