2014-11-01 7 views
0

나는 채워지는 이미지가 Nike Swoosh 인 사용자 정의 UIProgressView를 만들려고합니다. 나는 몇몇 자습서를 따르려고 노력했지만 아무데도 갈 수 없다.이미지가있는 사용자 정의 UIProgressView

내 현재의 접근 방식 :

가 된 swoosh 투명하고 주변 블랙의 내부를 확인합니다. 그 뒤에 큰 UIProgressView를 배치하십시오. swoosh의 중간이 투명하므로 swoosh가 가득 찬 것처럼 보입니다.

그러나 진행률 막대의 높이를 수정하는 것은 이상한 방식으로 너비가 흩어지기 때문에 고통 스럽습니다 ... 그리고 응답을 위해 진행률 표시 줄에 맞추기가 어렵습니다.

다른 아이디어 나 라이브러리가 있습니까?

감사

+0

을 된 swoosh을 그리고 필요에 따라 채 웁니다 자신의 컨트롤을 만듭니다 이미지를 입력합니다. – rmaddy

답변

0

나의 제안 :

프로그래밍 방식 번째 이미지를 그릴 당신 '된 swoosh'이미지에 대한 마스크로 적용하고 주기적으로이 작업을 반복합니다. 왼쪽에서

예는, (오른쪽에서 마스크)

{ 
//existing variables 

IBOutlet UIImageView *swooshView; 


} 

-(UIImage *)maskImageOfSize:(CGSize)size filledTo:(CGFloat)percentage{ 

UIGraphicsBeginImageContextWithOptions (size, NO, 0.0); 
CGContextRef context = UIGraphicsGetCurrentContext(); 


CGContextSetFillColourWithColour (context, [UIColor blackColor].CGColor); 

CGRect fillRect = CGRectZero; 
fillRect.size.height = size.height; 
fillRect.size.width = size.width * percentage/100.0; 
fillRect.origin.x = (size.width - fillRect.size.width); 

CGContextFillRect(context, fillRect); 

UIImage *result = UIGraphicsGetImageFromImageContext(); 
UIGraphicsEndImageContext(); 

return result; 
} 



-(void)fillSwooshToPercentage:(CGFloat)percentage{ 

percentage = ((CGFloat) fmaxf (0.0 , (fminf (100.0, (float) percentage))); 
// just policing a 'floor' and 'ceiling'... 
swooshView.layer.mask = [self maskImageOfSize:self.swoosh.bounds.size filledTo:percentage]; 

} 
관련 문제