UISlider торчит во второй раз - PullRequest
0 голосов
/ 08 сентября 2011

Привет, у меня есть uislider, который меняет изображения в uiimageview. В первый раз он работает отлично, без задержки.Но когда я нажимаю кнопку, чтобы опубликовать (открывается модальное представление) и закрыть модальное представление (это второй раз), uiimageview задерживается, когда показываются изображения. Я не могу найти, почему это становится медленнее: (

-(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];
}

это мой код, если вы можете понять, почему во второй раз я уменьшаю производительность. Слайдер, пожалуйста, скажите

edit 1:

Я отменяю некоторые анимации, и слайдер возвращаетсяк скорости, но теперь картинки застряли на слайдере, но картинки медленнее, чем в первый раз.

Ответы [ 2 ]

2 голосов
/ 08 сентября 2011

Ну, я бы сказал, что ваш первый шаг к тому, чтобы сделать этот метод более отзывчивым, состоит в том, чтобы удалить все распределения объектов и ненужную логику из этого метода делегата.Метод делегата-слайдера можно вызывать более 100 раз в секунду (если он настроен как непрерывный), и вы действительно должны использовать его только для обновления ivars и выполнения минимальной логики.Скорее всего, это основная причина ваших задержек.Что касается того, почему это происходит во второй раз, возможно, вы дублируете настройку ползунка на viewWillAppear, поэтому после модального режима метод делегата вызывается в два раза чаще.

0 голосов
/ 12 сентября 2011

Мой просмотр предупреждений заставляет приложение (слайдер и изображения) работать медленнее, поэтому я удаляю его, и оно прекрасно работает.

...