2013-11-15 4 views
0

enter image description here enter image description here В моих изображениях приложения находятся в эффекте Marquee (HTML). поэтому я установил x-точку изображения, используя NSTimer, но он был успешно реализован, но изображение имеет некоторое размытие. как я удаляю этот эффект размытия?Marquee Animation UIimageView blur

int x=0; 
ImgArray=[[NSMutableArray alloc] initWithObjects:[UIImage imageNamed:@"keyframe1.png"],[UIImage imageNamed:@"keyframe2.png"],[UIImage imageNamed:@"keyframe3.png"],[UIImage imageNamed:@"keyframe4.png"], [UIImage imageNamed:@"keyframe5.png"],nil]; 

imgView=[[UIImageView alloc]initWithFrame:CGRectMake(x, 0, 1024, 768)];` 
imgView.image=[ImgArray objectAtIndex:0]; 
[self.view addSubview:imgView]; 
[NSTimer scheduledTimerWithTimeInterval:.08 target:self selector:@selector(showMarquee) userInfo:nil repeats:YES]; 

в методе showMarquee изменить значение х

+0

Использование анимации UIView вместо NStimer. –

+0

Проверьте разрешение изображения. – Smita

+0

Не уверен в других, но я не знаю, что такое эффект «Marquee effect». Можете ли вы опубликовать код? – derpoliuk

ответ

0

Используйте ниже код шатровым эффекта.

объявить CAShapeLayer объект

CAShapeLayer *_marque; 

Используйте приведенные ниже методы:

-(void)setMarquee { 

    if (!_marque) { 
     _marque = [CAShapeLayer layer] ; 
     _marque.fillColor = [[UIColor clearColor] CGColor]; 
     _marque.strokeColor = [[UIColor grayColor] CGColor]; 
     _marque.lineWidth = 1.0f; 
     _marque.lineJoin = kCALineJoinRound; 
     _marque.lineDashPattern = [NSArray arrayWithObjects:[NSNumber numberWithInt:10],[NSNumber numberWithInt:5], nil]; 
     _marque.bounds = CGRectMake(self.imgView.frame.origin.x, self.imgView.frame.origin.y, 0, 0); 
     _marque.position = CGPointMake(self.imgView.frame.origin.x + self.imgView.frame.origin.x, self.imgView.frame.origin.y + self.imgView.frame.origin.y); 
    } 
    [self.view.layer addSublayer:_marque]; 
} 

-(void)showOverlayWithFrame:(CGRect)frame { 

     if (![_marque actionForKey:@"linePhase"]) { 
      CABasicAnimation *dashAnimation; 
      dashAnimation = [CABasicAnimation animationWithKeyPath:@"lineDashPhase"]; 
      [dashAnimation setFromValue:[NSNumber numberWithFloat:0.0f]]; 
      [dashAnimation setToValue:[NSNumber numberWithFloat:15.0f]]; 
      [dashAnimation setDuration:0.5f]; 
      [dashAnimation setRepeatCount:HUGE_VALF]; 
      [_marque addAnimation:dashAnimation forKey:@"linePhase"]; 
     } 

     _marque.bounds = CGRectMake(frame.origin.x, frame.origin.y, 0, 0); 
     _marque.position = CGPointMake(frame.origin.x + self.imgView.frame.origin.x, frame.origin.y + self.imgView.frame.origin.y); 

     CGMutablePathRef path = CGPathCreateMutable(); 
     CGPathAddRect(path, NULL, frame); 
     [_marque setPath:path]; 
     CGPathRelease(path); 

     _marque.hidden = NO; 


} 

Позовите методы

[self setMarquee]; 
[self showOverlayWithFrame:self.imgView.frame]; 

Просто ссылаются этот проект

https://www.cocoacontrols.com/controls/kaslideshow

+0

Спасибо ..manujmv. его show line в анимации marquee, но мне нужны образы в анимации слева направо. –

+0

можно добавить скриншот из ваших попыток – manujmv

+0

, пожалуйста, проверьте экраны .. –