Xcode에서 새로운보기 기반 응용 프로그램을 만들었습니다. 의 ViewController에서 CATransaction Not Animating
, 나는 수정 한 유일한 코드는 다음과 같습니다- (void)viewDidLoad {
[super viewDidLoad];
UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
newView.backgroundColor = [UIColor redColor];
[self.view addSubview:newView];
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:0.5f] forKey:kCATransactionAnimationDuration];
newView.layer.frame = CGRectMake(20,20,220,220);
[CATransaction commit];
}
그것은 응용 프로그램이로드 되 자마자 0.5 초 애니메이션 빨간색 사각형을 만들어야합니다. 문제는 그것이 움직이지 않는다는 것입니다. 나는 이유를 알 수 없다. 모든 변수를 분리하기 위해이 간단한 프로젝트를 만들었지 만 여전히 작동하지 않습니다.
누구든지 일부 Core-Animation 독서 자료의 올바른 방향으로 나를 도울 수 있습니까? 나는 이미 애플의 모든 것을 다 통과했다.
"newView.layer.frame = CGRectMake (2020220220);" 그렇지? 'layer'속성은 UIView의 CALayer에 액세스합니다. 그걸 움직여야 겠네, 맞지? – mazniak
네가 맞아, 그 선을 잘못 읽었다. 이 경우 당신이하고있는 일이 움직여야합니다. UIView begin/commit 애니메이션 블록을 사용하는 것이 약간 깔끔하지만, 똑같이 작동해야합니다. –
내가 생각할 수있는 것은 새로운 서브 뷰를 추가 한 후에 애니메이션을 트리거하기 전에 실행 루프가 끝나지 않는다는 것입니다. 따라서보기를 최종 위치에 배치하는 것입니다. 애니메이션 코드를 별도의 메서드로 이동하고 performSelector : withObject : afterDelay :를 사용하여 해당 메서드를 트리거하십시오 (0.01 초 지연). 하위 뷰를 추가 한 후에 애니메이션을 활성화해야합니다. –