두 개의보기가 포함 된보기 컨트롤러가 있습니다. 필요한 것은 뷰 컨트롤러를 밀고 나면 화면의 왼쪽 (_sidepanelview)이 화면 왼쪽으로 이동한다는 것입니다. 여기 화면 밖으로 애니메이션보기가 잘못되었습니다.
은 내가 쓴 것입니다 :-(void)viewDidAppear:(BOOL)animated{
CGRect newsidepanelviewposition = _sidepanelview.frame;
newsidepanelviewposition.origin.x = -_sidepanelview.frame.size.width;
[UIView animateWithDuration:0.5 delay:1.0 options:UIViewAnimationOptionCurveEaseIn animations:^{
_sidepanelview.frame = newsidepanelviewposition;
} completion:^(BOOL finished) {
NSLog(@"Done!");
}];
}
문제는 내가 응용 프로그램을 실행할 때 뷰 컨트롤러가 밀어 된 후, 보기 _sidepanelview이 화면에서 사라지고의 중심에 다시 나타납니다이다 화면 오른쪽에서 오는 대신 x = 0에서 x = -_sidepanelview 너비까지 화면에서 사라집니다.
내가 뭘 잘못하고있어?
참고 : 자동 레이아웃을 선택 취소하고 애니메이션을 올바르게 적용했지만 자동 레이아웃을 사용하여 문제가 해결되었습니다.
가 어떻게 스토리 보드에 어떤 제약 지시 모순하기 위해 setFrame를 사용하는 방법을 말해 줄래? – Falcoa
내가 말한 것은 'setFrame'은 프레임 업데이트가 제약 조건을 업데이트하지 않기 때문에 본질적으로 AutoLayout과 상충됩니다. AutoLayout을 사용한다면,'setFrame'을 사용하지 마십시오. 항상 제약 조건을 업데이트하십시오. 몇 가지 샘플 코드로 답변을 업데이트했습니다. –
제 경우에는 제약 조건을 사용하여 컨테이너의 X와 Y에서 _sidepanelview를 가운데에 맞 춥니 다. 제약 조건을 어떻게 업데이트해야합니까? 예를 들어 leadingSpace 제약 조건을 사용하는 것을 봅니다. – Falcoa