괜찮습니까?이 질문은 초보자 용 질문이므로 미리 사과드립니다. Interface Builder에서 스크린 밖에서 레이아웃 한 UIView가 있습니다. 사용자가 버튼을 누르면이 화면에 애니메이션을 적용하려고합니다. 그것은 작동하지만 UIView의 모든 버튼과 상호 작용할 수 없습니다. UIViews 레이어의 위치를 설정하려고 시도했지만 실제로 UIView 메뉴에서 왼쪽에 여분의 81 픽셀을 표시합니다. 이런 일이 생기면 버튼과 상호 작용할 수 있지만 화면 오른쪽에 있어야합니다.iPad - 애니메이션 화면에는 애니메이션이 표시되지 않습니다.
CABasicAnimation *moveView = [CABasicAnimation animationWithKeyPath:@"position"];
moveView.delegate = self;
moveView.duration=0.5;
// If the menu is displayed, close it!
CGPoint currentPosView = [[entirePage layer] position];
CGPoint destView;
[moveView setFromValue:[NSValue valueWithCGPoint:currentPosView]];
if (menuDisplayed) {
// Move right to our destination
destView.x = currentPosView.x;
destView.y = currentPosView.y + 81;
[moveView setToValue:[NSValue valueWithCGPoint:destView]];
// Otherwise, open it
} else {
// Move left to our destination
destView.x = currentPosView.x;
destView.y = currentPosView.y - 81;
[moveView setToValue:[NSValue valueWithCGPoint:destView]];
}
// Animate the view
[[entirePage layer] addAnimation:moveView forKey:@"move"];
// Set the final position of our layer
[[entirePage layer] setPosition:destView];
menuDisplayed = !menuDisplayed;
그리고 다음 animationDidStop 방법에 : 다음은 openMenu 버튼에 IBAction를 내 코드입니다
CGPoint currentPosMenu = [[menuBar layer] position];
if (menuDisplayed) {
currentPosMenu.x -= 81;
} else {
currentPosMenu.x += 81;
}
[[menuBar layer] setPosition:currentPosMenu];
도움말 ???
최근에 비슷한 문제가있었습니다. 상위 뷰의 경계 외부에서 그려진 뷰는 상호 작용할 수 없습니다. 또한 Core Animation은 애니메이션 만 수행하는 것이 맞습니다. 실제 속성을 변경하지 않습니다. userInteractionEnabled를 시험 사용해보십시오. 이 방법으로 효과가 없으면 더러운 상태가되어 애니메이션이 끝나면 슈퍼 뷰에서 뷰를 제거한 다음 즉시 다시 추가 할 수 있습니다. –
이 프로젝트의 기한이 가까워 지지만 해결 방법을 찾았습니다 (그러나 원하는 것은 아닙니다). 처음에는 UIView를 표시 한 다음 모든 것을 슬라이드하여 봅니다. 터치 상호 작용은 메뉴를 가져 왔을 때 작동하지만 다른 방법이 있어야합니다. – Jacob