내 iPhone 앱에 대해 아주 간단한 선 그리기 애니메이션을 구현하려고합니다. 지연 후 내보기에 직사각형을 그려야합니다. 내 드로잉 메서드를 실행하려면 performSelector
을 사용하고 있습니다. 다음을 통해 호출지연된 그림을 통한 간단한 애니메이션
-(void) drawRowAndColumn: (id) rowAndColumn
{
int rc = [rowAndColumn intValue];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, currentColor.CGColor);
CGRect rect = CGRectMake(rc * 100, 100, 100, 100);
CGContextAddRect(context, rect);
CGContextDrawPath(context, kCGPathFillStroke);
}
:
int col = 10;
[self performSelector:@selector(drawRowAndColumn:)
withObject:[NSNumber numberWithInt:col]
afterDelay:0.2];
하지만 drawRowAndColumn:
메시지가 실제로 보낼 때 나는 다음과 같은 오류를 얻을, 그것은 더 이상 유효한 CGContextRef
에 대한 액세스 권한이없는 것 같습니다 :
drawRowAndColumn
에 직접 전화로
performSelector
을 교체 할 경우
<Error>: CGContextAddRect: invalid context
, 그것은 잘 작동합니다. 그래서 내 첫 번째 아이디어는 performSelector
을 통해 CGContextRef
을 전달하는 것이었지만 동시에 여러 인수를 전달하는 방법을 알아낼 수 없습니다 (다른 좋은 질문입니다).
위의 코드에는 어떤 문제가 있습니까?
나는 그것이 단순한 무엇인가 알고 있었다, 고마워! –
애니메이션을하기에 좋은 * 방법은 무엇입니까? – mk12
Core Animation 또는 더 높은 수준의 UIView 기반 래퍼를 사용합니다. 그게 내 대답의 마지막 단락 (UIView 애니메이션 블록)에 대한 이야기였습니다. 애니메이션 블록을 시작하고 일부 UIView 속성을 설정 한 다음 애니메이션을 커밋하고 속성 변경 사항이 애니메이션으로 표시됩니다 (타이밍 등을 제어 할 수 있음). – philsquared