2014-12-30 5 views
1

AutoLayout을 사용하여 "상향식"에서 뷰를 애니메이션화하려고합니다.자동 레이아웃 제약 조건 변경시 UIView가 iOS에 애니메이션을 적용하지 않습니다.

@interface ViewController() 
@property (strong) AViewController *aVC; 
@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.aVC = [[AViewController alloc] init]; 
    self.aVC.view.translatesAutoresizingMaskIntoConstraints = NO; 
    [self.view addSubview:self.aVC.view]; 
    [self.aVC.view autoPinEdgeToSuperviewEdge:ALEdgeLeft withInset:0]; 
    [self.aVC.view autoSetDimension:ALDimensionHeight toSize:100]; 
    [self.aVC.view autoSetDimension:ALDimensionWidth  toSize:320]; 
    NSLayoutConstraint *constraint = [self.aVC.view autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:-100]; 
    [self.view layoutIfNeeded]; 
    [UIView animateWithDuration:2 animations:^{ 
     constraint.constant = -25; 
     [self.view layoutIfNeeded]; 
    }]; 

} 

I 추가, 큰 PureLayout 범주를 사용하고 있습니다 :

이 아이폰 OS 8에서 잘 작동하지만, 그것은 여기

아이폰 OS 7에 애니메이션을 적용하지 않는 것은 코드입니다 제약을 쉽게.

첨부 : project sample on Github - iOS 7 시뮬레이터가 아닌 iOS 8 시뮬레이터에서 작동합니다.

iOS 7에서이 작업을 수행하는 방법에 대한 제안 사항이 있으십니까?

답변

4

[self.view layoutIfNeeded][self.aVC.view layoutIfNeeded]으로 바꾸면 두 버전 모두에서 작동합니다. 나는 구체적인 이유를 모르지만.

편집.

다음과 같이 시도하십시오.

[self.aVC.view layoutIfNeeded]; 
[UIView animateWithDuration:2 animations:^{ 
    constraint.constant = -25; 
    [self.view layoutIfNeeded]; 
}]; 
+0

내 업데이트 된 질문을 참조하십시오. 하위보기가있는 xib에서는 작동하지 않습니다. – kernix

+0

나는 오래된 것을 다운로드한다, 그것은 나를 위해 일했다. xib에서 뭐라도 수정 했니? – gabbler

+0

예, 첫 번째 커밋에서 빈 xib로 작업했습니다. xib에 라벨과 이미지 두 개를 추가했는데 이제 iOS 7에서는 애니메이션이 적용되지 않습니다. – kernix

관련 문제