Iphone UISlider第二次粘滞

Iphone UISlider第二次粘滞,iphone,objective-c,ios,uiimageview,uislider,Iphone,Objective C,Ios,Uiimageview,Uislider,嗨,我有一个uislider,可以在uiimageview中更改图像。第一次它工作得很好,没有延迟。但是,当我单击按钮发布(有一个打开的模式视图)并关闭模式视图(这是第二次)时,uiimageview会延迟显示图像。我找不到它变慢的原因:( -(iAction)滑块滑块:(UISlider*)作为滑块{ float f=slider.value; NSString*show=[NSString stringWithFormat:@“%.0f%%”,f]; label2.text=show; NS

嗨,我有一个uislider,可以在uiimageview中更改图像。第一次它工作得很好,没有延迟。但是,当我单击按钮发布(有一个打开的模式视图)并关闭模式视图(这是第二次)时,uiimageview会延迟显示图像。我找不到它变慢的原因:(

-(iAction)滑块滑块:(UISlider*)作为滑块{
float f=slider.value;
NSString*show=[NSString stringWithFormat:@“%.0f%%”,f];
label2.text=show;
NSString*show1=[NSString stringWithFormat:@“%.0f”,f];
imageView.image=[UIImage ImageName:[NSString stringWithFormat:@”/Smiley_000%@.png,show1]];
float slided=slider.value;
如果(滑动>99)
{
[imageView1 setHidden:否];
[图像视图2设置隐藏:是];
NSString*fullpath=[[NSBundle mainBundle]bundlePath]stringByAppendingString:@“/Smiley_00099.png”];
imageView.image=[UIImage imageWithContentsOfFile:fullpath];
secondarray=[NSArray arrayWithObjects:
[UIImage ImageName:@“Rays_00000.png”],
[UIImage ImageName:@“Rays_00001.png”],
[UIImage ImageName:@“Rays_00002.png”],
[UIImage ImageName:@“Rays_00003.png”],
[UIImage ImageName:@“Rays_00004.png”],
[UIImage ImageName:@“Rays_00005.png”],
[UIImage ImageName:@“Rays_00006.png”],
[UIImage ImageName:@“Rays_00007.png”],
[UIImage ImageName:@“Rays_00008.png”],
[UIImage ImageName:@“Rays_00009.png”],
零];
imageView1.animationImages=secondarray;
//一次浏览所有图像需要多少秒。
imageView1.animationDuration=0.5;
//重复动画的次数(0表示无限期)。
imageView1.animationRepeatCount=0;
[imageView1 startAnimating];
}

else if(slided好吧,我想说的是,使此方法更具响应性的第一步是删除此委托方法中的所有对象分配和不必要的逻辑。slider委托方法可以每秒调用100次以上(如果设置为连续)而且你应该只使用它来更新IVAR并执行最小的逻辑。这很可能是你延迟的根本原因。至于为什么会在第二次出现这种情况,也许你是在复制
视图上的滑块设置将出现
,所以在模式之后,委托方法的调用量会增加一倍。

My alertview使应用程序(滑块和图像)运行变慢,因此我将其删除,它工作正常。

在滑块回调中运行的代码相当多。请记住,此委托方法每秒可以调用数百次。是的,您是对的,但是(作为noob)我无法在全局中定义数组,因此这些行将消失。感谢提示mate我检查我不使用WiewMillAppear滑块也是iboutlet,但我正在尝试最小化函数中的代码我会向您报告,如果它会更快,因为Opp mate仍然是一样的,我清理了大部分代码,但仍然是第二次粘在一起。然后perhaps您可以在设置滑块的地方发布代码,也可以发布所有与滑块相关的代码。mateı发现了问题,它是我的alertview,它使应用程序运行速度变慢:(我删除了它,工作得很好,感谢您所做的一切
-(IBAction)sliderSlide:(UISlider *)aSlider {

float f=slider.value;
NSString *show=[NSString stringWithFormat:@"%.0f %%",f];
label2.text=show;
NSString *show1=[NSString stringWithFormat:@"%.0f",f];
imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"/Smiley_000%@.png", show1]];

float slid=slider.value;
if(slid>99)
{
    [imageView1 setHidden:NO];
    [imageView2 setHidden:YES];
    NSString *fullpath = [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/Smiley_00099.png"];
    imageView.image = [UIImage imageWithContentsOfFile:fullpath];
    secondarray=[NSArray arrayWithObjects:  
                 [UIImage imageNamed:@"Rays_00000.png"],
                 [UIImage imageNamed:@"Rays_00001.png"],
                 [UIImage imageNamed:@"Rays_00002.png"],
                 [UIImage imageNamed:@"Rays_00003.png"],
                 [UIImage imageNamed:@"Rays_00004.png"],
                 [UIImage imageNamed:@"Rays_00005.png"],
                 [UIImage imageNamed:@"Rays_00006.png"],
                 [UIImage imageNamed:@"Rays_00007.png"],
                 [UIImage imageNamed:@"Rays_00008.png"],
                 [UIImage imageNamed:@"Rays_00009.png"],
                 nil];

    imageView1.animationImages = secondarray;        
    // How many seconds it should take to go through all images one time.
    imageView1.animationDuration = 0.5;
    // How many times to repeat the animation (0 for indefinitely).
    imageView1.animationRepeatCount = 0;
    [imageView1 startAnimating];
}
else if (slid<1)
{
    [imageView2 setHidden:NO];
    [imageView1 setHidden:YES];
    NSString *fullpath = [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/Smiley_0000.png"];
    imageView.image = [UIImage imageWithContentsOfFile:fullpath];
    firstarray=[NSArray arrayWithObjects:  
                         [UIImage imageNamed:@"Teardrop_00000.png"],
                         [UIImage imageNamed:@"Teardrop_00001.png"],
                         [UIImage imageNamed:@"Teardrop_00002.png"],
                         [UIImage imageNamed:@"Teardrop_00003.png"],
                         [UIImage imageNamed:@"Teardrop_00004.png"],
                         [UIImage imageNamed:@"Teardrop_00005.png"],
                         [UIImage imageNamed:@"Teardrop_00006.png"],
                         [UIImage imageNamed:@"Teardrop_00007.png"],
                         [UIImage imageNamed:@"Teardrop_00008.png"],
                         [UIImage imageNamed:@"Teardrop_00009.png"],
                         [UIImage imageNamed:@"Teardrop_00000.png"],
                         [UIImage imageNamed:@"Teardrop_00000.png"],
                         [UIImage imageNamed:@"Teardrop_00000.png"],
                         [UIImage imageNamed:@"Teardrop_00000.png"],
                         [UIImage imageNamed:@"Teardrop_00000.png"],
                         nil];


    imageView2.animationImages = firstarray;        
    // How many seconds it should take to go through all images one time.
    imageView2.animationDuration = 0.8;

    // How many times to repeat the animation (0 for indefinitely).
    imageView2.animationRepeatCount = 0;
    [imageView2 startAnimating];
    [self.view addSubview:imageView2];
}
else 
{
    [imageView1 setHidden:YES];
    [imageView2 setHidden:YES];
    [imageView1 stopAnimating];
    [imageView2 stopAnimating];
}
[[NSUserDefaults standardUserDefaults] setFloat:slid forKey:@"slider"];
[[NSUserDefaults standardUserDefaults] synchronize];
}