2013-11-15 5 views
0

enter image description here enter image description here 내 앱 이미지는 Marquee effect (HTML)입니다. 그래서 NSTimer을 사용하여 이미지의 x 지점을 설정했지만 성공적으로 구현되었지만 이미지에 약간의 흐림이 표시됩니다. 이 흐림 효과를 어떻게 제거합니까? showMarquee 방법에서마키 애니메이션 UIimageView 흐림

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

는 X

+0

NStimer 대신 UIView Animation을 사용하십시오. –

+0

이미지의 해상도를 확인하십시오. – Smita

+0

다른 사람에 대해서는 잘 모르지만 "움직이는 효과"가 무엇인지 알 수 없습니다. 코드를 게시 할 수 있습니까? – 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. marquee 애니메이션에서 그 쇼 라인하지만 난 왼쪽에서 오른쪽으로 움직이는 애니메이션 –

+0

당신이 시도한 화면 샷을 추가 할 수있는 이미지가 필요 – manujmv

+0

화면을 확인하시기 바랍니다 .. –

관련 문제